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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Моментальное обновление QTreeWidget  (Прочитано 4950 раз)
vpara
Гость
« : Июль 28, 2010, 12:47 »

Ситуация такова:
QTreeWidget заполняю запросом из бд...
На форме сделал кнопку (Создать новый) ... при нажатий создаю запросом в бд новую линию.
Подскажите как культурно обновить содержание QTreeWidget-а.
Записан
crossly
Гость
« Ответ #1 : Июль 28, 2010, 12:58 »

использовать MVC
Записан
vpara
Гость
« Ответ #2 : Июль 28, 2010, 15:13 »

использовать MVC

Хотите сказать что нужно создать модель и потом сделать setModel для QTreeView?
Если это так ... то я пытался ... но толком нечего не получилось.

//---------

Ладно спросим по другому Улыбающийся
Есть 2 таблицы (структура примерно показана на рисунке)

Я построил QTreeWidget при помощи запроса (как показано ниже).
Код:
    QMap<int, QTreeWidgetItem*> categoryMap;
    QString sFilterInterval;
    categoryTree = new QTreeWidget();
    categoryTree->setColumnCount(3);
    categoryTree->setColumnHidden(1,true);
    categoryTree->setColumnHidden(2,true);

    QTreeWidgetItem *parentItem = categoryTree->invisibleRootItem();

    sFilterInterval = QString("SELECT DISTINCT category_parent_id FROM category_xref");
    QSqlQuery queryParents(sFilterInterval);

    while (queryParents.next()){
        if (queryParents.value(0).toInt()>0){
            parentItem = categoryMap.value(queryParents.value(0).toInt());
        }else{
            parentItem = categoryTree->invisibleRootItem();
        }
        sFilterInterval = QString("SELECT category_parent_id, category_id, category_name, list_order FROM "
                                  "category, category_xref WHERE "
                                  "category_id = category_child_id AND "
                                  "category_parent_id = %1 ORDER BY list_order").arg(queryParents.value(0).toInt());
        QSqlQuery query(sFilterInterval);
        while (query.next()){
            QTreeWidgetItem *category = new QTreeWidgetItem(parentItem);
            category->setText(0, query.value(2).toString());
            category->setText(1, query.value(1).toString());
            categoryMap.insert(query.value(1).toInt(), category);
        }
    }

Подскажите друзья как мне построить модель ...
« Последнее редактирование: Июль 28, 2010, 15:58 от vpara » Записан
crossly
Гость
« Ответ #3 : Июль 28, 2010, 15:39 »

поищи по форуму.... тема про sql tree model поднималась не раз....
Записан
vpara
Гость
« Ответ #4 : Июль 28, 2010, 16:08 »

Дико извиняюсь но похожи ситуаций не нашел ...
Сделал так:
Код:
QSqlRelationalTableModel *treeModel = new QSqlRelationalTableModel();
    treeModel->setTable("category_xref");
    treeModel->select();

    QTreeView *categoryTree_new = new QTreeView(this);
    categoryTree_new->setModel(treeModel);

Получилось то что на изображений ... А как ралэйшыны делать не догоняю ...
Точнее релэйшн для category_name знаю как сделать ... я не знаю как сделать релэйшн чтоб получилось ДЕРЕВО
« Последнее редактирование: Июль 28, 2010, 16:16 от vpara » Записан
crossly
Гость
« Ответ #5 : Июль 28, 2010, 16:15 »

первое что попалось http://www.prog.org.ru/topic_4659_0.html
Записан
vpara
Гость
« Ответ #6 : Июль 28, 2010, 16:29 »

первое что попалось http://www.prog.org.ru/topic_4659_0.html

Спасибо! Ушел разобраться ...
Записан
xsau
Гость
« Ответ #7 : Июль 29, 2010, 01:12 »

Реализовывал недавно такую задачу, конечно можно моментально обновлять QTreeWidget, но постоянно сбиваеться фокус и толком по нему не кликнуть, так что только MVC!
Записан
vpara
Гость
« Ответ #8 : Июль 29, 2010, 12:04 »

Спасибо всем ... разобрался ... сделал по примерам ...
(в приложений то что нашел на форуме и пригодилось)
Но пока не могу понять как установить иконку для итема
« Последнее редактирование: Июль 29, 2010, 12:06 от vpara » Записан
Kolobok
Гость
« Ответ #9 : Июль 29, 2010, 13:11 »

Qt::DecorationRole
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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