Название: Проблемы с QSortFilterProxyModel
Отправлено: Lion от Март 08, 2007, 09:47
У меня есть модель, которая нормально работает с QTreeView, но если её пропустить через QSortFilterProxyModel, то в представлении ничего не появляется, а при выходе из программы вылезает ошибка. При этом если ту же модель пропустить через QProxyModel, то все работает нормально. У кого нибудь есть соображения по этому поводу?
Название: Проблемы с QSortFilterProxyModel
Отправлено: Alexei от Март 08, 2007, 14:25
Напиши, пожалуйста, каким образом используешь QSortFilterProxyModel. Возможно, это поможет разобраться.
Название: Проблемы с QSortFilterProxyModel
Отправлено: Lion от Март 08, 2007, 19:05
После небольших изменений в simpletreemodel получаем следующее: Работающий вариант: #include <QtGui> #include <QSortFilterProxyModel>
#include "treemodel.h"
int main(int argc, char *argv[]) { Q_INIT_RESOURCE(simpletreemodel);
QApplication app(argc, argv);
TreeModel *model = new TreeModel();
QSortFilterProxyModel *proxy = new QSortFilterProxyModel(0); proxy->setDynamicSortFilter(true); proxy->setSourceModel(model);
QTreeView view; view.setWindowTitle(QObject::tr("Simple Tree Model")); view.show(); QFile file(":/default.txt"); file.open(QIODevice::ReadOnly);
model->setupModelData(QString(file.readAll()).split(QString("\n")),model->getRootItem()); view.setModel(proxy);
file.close(); return app.exec(); }
Меняем местами две строчки и в представлении ничего нет: view.setModel(proxy); model->setupModelData(QString(file.readAll()).split(QString("\n")),model->getRootItem());
А вот так все работает: view.setModel(model); model->setupModelData(QString(file.readAll()).split(QString("\n")),model->getRootItem());
Явно бага в QSortFilterProxyModel, будеи ждать 4.2.3, там вроде много исправлений в этом классе.
Название: Проблемы с QSortFilterProxyModel
Отправлено: Alexei от Март 08, 2007, 21:08
Странно, у меня вот так работает: #include <QtGui>
int main(int argc, char *argv[]) { QApplication app(argc, argv); QStandardItemModel *model = new QStandardItemModel(); QSortFilterProxyModel* proxy = new QSortFilterProxyModel(0); proxy->setDynamicSortFilter(true); proxy->setSourceModel(model); QTreeView view; view.setWindowTitle("Simple Tree Model"); view.show(); view.setModel(model);
//заполняем модель model->insertColumns(0, 1); model->insertRows(0, 3); model->setData(model->index(0, 0), "1"); model->setData(model->index(1, 0), "2"); model->setData(model->index(2, 0), "3");
return app.exec(); }
Название: Проблемы с QSortFilterProxyModel
Отправлено: Lion от Март 12, 2007, 00:37
view.setModel(model); - Прокси модель не используется! Замени на - view.setModel(proxy);
|