Russian Qt Forum
Апрель 26, 2024, 22:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: QSqlTreeModel всем миром...  (Прочитано 28734 раз)
crossly
Гость
« Ответ #15 : Ноябрь 12, 2008, 14:02 »

товарищ Zmeishe !!... сделай доброе дело для сообщества... !! Улыбающийся (пиво прилогается...)
Записан
Zmeishe
Гость
« Ответ #16 : Ноябрь 12, 2008, 16:27 »

Излишков свободного времени у меня нет совсем, поэтому пинать бесполезно.
То, что у меня быстро получается, чего у других медленно получается - ну извините не моя вина.
Может у меня мозги на другой частоте работают ?  Подмигивающий

С сообществом поделюсь.
Предлагаю так же, как с многоуровневыми заголовками - делаю выжимку и выкладываю, а дальше вопрос-ответ, т.к. нет времени подробные комментарии расписывать в исходниках.

>> можно пива ему пообещать
- Барыня, водочку пить будешь?
- Ах, оставьте.
Смеющийся
« Последнее редактирование: Ноябрь 12, 2008, 16:39 от Zmeishe » Записан
Sergeich
Гость
« Ответ #17 : Ноябрь 16, 2008, 15:40 »

Я же уже вроде постил редактируемую tree-модель с кэшем, основанную на QAbstractItemModel, правда для одной таблицы. Хотя не помню, что за вариант выкладывал. Вобщем, см. аттач.
Записан
Karl-Philipp
Гость
« Ответ #18 : Январь 08, 2009, 22:47 »

спасибо за модель.

Только вот никак не пойму, какой должна быть структура таблицы? Пробовал сделать так:
Код:
"CREATE TABLE Object (id INTEGER PRIMARY KEY, parentName INTEGER, value1 INTEGER, value2 INTEGER)"
Базу конектит, таблицу видит, а данные не выводит. Подскажите, пожалуйста, что я мог не так сделать?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #19 : Январь 08, 2009, 23:10 »

2 terlan, может внешний ключ надо на родителя?
Записан

Юра.
Karl-Philipp
Гость
« Ответ #20 : Январь 08, 2009, 23:26 »

Сделал так (добавил внешний ключ на родителя):
           
Цитировать
QSqlQuery query;
   query.exec("CREATE TABLE Object (id INTEGER PRIMARY KEY, parentName INTEGER  FOREIGN KEY, value1 INTEGER, value2 INTEGER)");

   query.exec("insert into Object values(NULL,1,1,0)");
   query.exec("insert into Object values(NULL,1,3,0)");
   query.exec("insert into Object values(NULL,1,5,0)");
   query.exec("insert into Object values(NULL,2,2,0)");
   query.exec("insert into Object values(NULL,2,3,0)");

перестала заполняться таблица Грустный
Разве не могут внешние ключи для нескольких записей быть одинаковыми?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #21 : Январь 09, 2009, 00:41 »

Могут, а вот NULL в первичном ключе это зачем?
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #22 : Январь 09, 2009, 00:43 »

и зачем ты это мучаешь через Query, ведь о том пляска с моделью и была, чтобы в представлении ее использовать.
Создай таблицу, к модели прицепи вьюху, и через неё пользуй. Я так идею понимаю.
Записан

Юра.
Karl-Philipp
Гость
« Ответ #23 : Январь 09, 2009, 09:34 »

Могут, а вот NULL в первичном ключе это зачем?
Прочитал такое на сайте SQLITE, раздел FAQ
Цитировать
If you declare a column of a table to be INTEGER PRIMARY KEY, then whenever you insert a NULL into that column of the table, the NULL is automatically converted into an integer which is one greater than the largest value of that column over all other rows in the table, or 1 if the table is empty

и зачем ты это мучаешь через Query, ведь о том пляска с моделью и была, чтобы в представлении ее использовать.
Создай таблицу, к модели прицепи вьюху, и через неё пользуй. Я так идею понимаю.
я не мучаю через Query, просто написал небольшую программку, в которой создал базу с таблицей.
Саму SqlTreeModel не трогал, а просто подсоединяю к ней созданную базу.
Только не отображается таблица. У меня подозрение, что в таблице что-то не так, а вот что Непонимающий
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #24 : Январь 09, 2009, 11:55 »

Только не отображается таблица. У меня подозрение, что в таблице что-то не так, а вот что Непонимающий
дак посмотри ее с помощью %QTDIR%/demos/sqlbrowser, что там реально записалось
Записан

Юра.
Karl-Philipp
Гость
« Ответ #25 : Январь 09, 2009, 12:15 »

Только не отображается таблица. У меня подозрение, что в таблице что-то не так, а вот что Непонимающий
дак посмотри ее с помощью %QTDIR%/demos/sqlbrowser, что там реально записалось
Подозрение касается структуры таблицы в базе - почему то модель (SqlTreemodel) не подгребает данные из созданной мною таблицы.
Ps А данные в таблицу вставляются, правда без FOREIGN KEY

-----------------------
хотя, если судить по коду sqltreemodel, то FOREIGN KEY в данной ситуации для родителя не нужен.
« Последнее редактирование: Январь 09, 2009, 12:33 от terlan » Записан
Karl-Philipp
Гость
« Ответ #26 : Январь 09, 2009, 23:50 »

получилось:
ошибки было 2:
1) названия полей не соответствовали тем, что находятся в модели;
2) не была определена ниодна запись с родительским уровнем 0, то есть даже для первого элемента уже был указан родитель первого уровня.

Т.о.
1) создаем таблицу
Цитировать
CREATE TABLE Object (ObjID INTEGER PRIMARY KEY, ParentID INTEGER, ObjName TEXT, ObjType TEXT, Created TEXT);
2) создаем записи:
Цитировать
   QSqlQuery query;
   query.exec("insert into Object values(NULL,0,'Object1','Some type', 'yes')");
   query.exec("insert into Object values(NULL,1,'Object2','Some type', 'yes')");
   query.exec("insert into Object values(NULL,1,'Object3','Some type', 'yes')");
Зы: спасибо Константину за наводки Улыбающийся
Записан
vpara
Гость
« Ответ #27 : Июль 29, 2010, 14:49 »

Я же уже вроде постил редактируемую tree-модель с кэшем, основанную на QAbstractItemModel, правда для одной таблицы. Хотя не помню, что за вариант выкладывал. Вобщем, см. аттач.

По вашему примеру я сделал себе трее только с выбором из 2 таблиц (структура на рисунке) ...
А дальше возникли 2 вопроса:
 1. Хочу сделать выборку еще из 2 таблиц (итого будут 4 ... структура в рисунке2) ... что посоветуете сделать в те же запросы или создавать новые ниже
 2. Как установить иконки для итемов? (пока не разобрался .... но сильно не капал)
Записан
vpara
Гость
« Ответ #28 : Июль 29, 2010, 16:10 »

Я же уже вроде постил редактируемую tree-модель с кэшем, основанную на QAbstractItemModel, правда для одной таблицы. Хотя не помню, что за вариант выкладывал. Вобщем, см. аттач.

Пытаюсь грубо (временно) дописать запрос ... по идее должен быть как то так:

       query.exec( QString("SELECT %1 FROM %2, %3 WHERE %4 = %5 AND %6 = %7 "
                        "UNION ALL "
                        "SELECT product.product_id FROM product, product_category_xref "
                        "WHERE product.product_id = product_category_xref.product_id AND category_id = %5")
                .arg(idName)
      .arg(tableName)
                .arg(tableRelated)
      .arg(parentName)
      .arg(id)
                .arg(idName)
                .arg(relatedId)
                .arg(orderByField));

Но результат не радует ...
« Последнее редактирование: Июль 29, 2010, 16:15 от vpara » Записан
irv
Гость
« Ответ #29 : Май 15, 2012, 12:40 »

Я скачал проект QyurSqlTreeView с qt-apps.org, но возникли проблемы.

Собрал пример (sqltreesample), подключил к своей БД и все успешно работает.
Добавил новую форму через QtCreator и компонент tableview и treeview.
Подключил загоолвочный файл qyursqltreeview.h и добавил код:

Код:
QyurSqlTreeModel model("treetable",QStringList()<<QObject::tr("Id")<<QObject::tr("ParentId")<<QObject::tr("Type")<<QObject::tr("Title")<<QObject::tr("Summary"),QStringList()<<"id"<<"parentId"<<"type"<<"title"<<"summary",-1,"title");

ui.tableView.setModel(model.sourceModel());


В таблице tableView ничего не отображается.

Вопрос простой.
Как соединить компоненты tableview и treeview добавленные через QtDesigner c QyurSqlTreeModel.
Где я ошибся?

Спасибо.
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 22.