Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: vpara от Июль 28, 2010, 12:47



Название: Моментальное обновление QTreeWidget
Отправлено: vpara от Июль 28, 2010, 12:47
Ситуация такова:
QTreeWidget заполняю запросом из бд...
На форме сделал кнопку (Создать новый) ... при нажатий создаю запросом в бд новую линию.
Подскажите как культурно обновить содержание QTreeWidget-а.


Название: Re: Моментальное обновление QTreeWidget
Отправлено: crossly от Июль 28, 2010, 12:58
использовать MVC


Название: Re: Моментальное обновление QTreeWidget
Отправлено: vpara от Июль 28, 2010, 15:13
использовать MVC

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

//---------

Ладно спросим по другому :)
Есть 2 таблицы (структура примерно показана на рисунке)
(http://)
Я построил 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);
        }
    }

Подскажите друзья как мне построить модель ...


Название: Re: Моментальное обновление QTreeWidget
Отправлено: crossly от Июль 28, 2010, 15:39
поищи по форуму.... тема про sql tree model поднималась не раз....


Название: Re: Моментальное обновление QTreeWidget
Отправлено: vpara от Июль 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 знаю как сделать ... я не знаю как сделать релэйшн чтоб получилось ДЕРЕВО


Название: Re: Моментальное обновление QTreeWidget
Отправлено: crossly от Июль 28, 2010, 16:15
первое что попалось http://www.prog.org.ru/topic_4659_0.html (http://www.prog.org.ru/topic_4659_0.html)


Название: Re: Моментальное обновление QTreeWidget
Отправлено: vpara от Июль 28, 2010, 16:29
первое что попалось http://www.prog.org.ru/topic_4659_0.html (http://www.prog.org.ru/topic_4659_0.html)

Спасибо! Ушел разобраться ...


Название: Re: Моментальное обновление QTreeWidget
Отправлено: xsau от Июль 29, 2010, 01:12
Реализовывал недавно такую задачу, конечно можно моментально обновлять QTreeWidget, но постоянно сбиваеться фокус и толком по нему не кликнуть, так что только MVC!


Название: Re: Моментальное обновление QTreeWidget
Отправлено: vpara от Июль 29, 2010, 12:04
Спасибо всем ... разобрался ... сделал по примерам ...
(в приложений то что нашел на форуме и пригодилось)
Но пока не могу понять как установить иконку для итема


Название: Re: Моментальное обновление QTreeWidget
Отправлено: Kolobok от Июль 29, 2010, 13:11
Qt::DecorationRole