Название: QSortFilterProxyModel + QIdentityProxyModel (Qt 4.8.4) Отправлено: kandrey от Июнь 03, 2013, 18:51 Привет!
Есть такой кусок кода class Model : public QAbstractTableModel { public: Model(QObject *parent = 0) : QAbstractTableModel(parent) {} int rowCount(const QModelIndex &parent) const { return 10; } int columnCount(const QModelIndex &parent) const { return 5; } QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const { if(!index.isValid()) return QVariant(); if(role == Qt::DisplayRole) return QString("%1:%2").arg(index.row()).arg(index.column()); return QVariant(); } }; TestWidget::TestWidget(QWidget *parent) : QWidget(parent) { QVBoxLayout *l = new QVBoxLayout; setLayout(l); QTableView *view = new QTableView(this); view->setSelectionBehavior(QAbstractItemView::SelectRows); view->setSortingEnabled(true); l->addWidget(view); Model *model = new Model(this); QSortFilterProxyModel *sortModel = new QSortFilterProxyModel(this); sortModel->setSourceModel(model); QIdentityProxyModel *proxy = new QIdentityProxyModel(this); proxy->setSourceModel(sortModel); view->setModel(proxy); resize(800, 600); } если в таблице выделить строку и нажать сортировку выделенные ячейки оказываются в разных строках. Что не так с QIdentityProxyModel или я как то не так ее применяю? Название: Re: QSortFilterProxyModel + QIdentityProxyModel (Qt 4.8.4) Отправлено: 0x6368656174 от Июнь 04, 2013, 03:42 Надо наоборот:
proxy->setSourceModel(model); sortModel->setSourceModel(proxy); view->setModel(sortModel); Название: Re: QSortFilterProxyModel + QIdentityProxyModel (Qt 4.8.4) Отправлено: kandrey от Июнь 04, 2013, 13:45 а почему так надо? а если нужна прокси модель именно после сортировки?
|