QSortFilterProxyModel不返回有效索引

时间:2018-04-20 09:16:45

标签: c++ qt5 qtreeview qstandarditemmodel qsortfilterproxymodel

以下伪代码将用于解释我的问题:

QTreeView* treeView = new QTreeView();
QStandardItemModel* sourceModel = new QStandardItemModel();
//sourceModel has seven columns and will be filled here with four rows
QSortFilterProxyModel* sortFilterProxyModel = new QSortFilterProxyModel();

sortFilterProxyModel->setSourceModel(sourceModel);
treeView->setModel( sortFilterProxyModel );

现在,如果我致电sortFilterProxyModel->rowCount(),我会收到正确的值4。如果我尝试从源模型中获取第一行中第一列的索引,那么它可以工作:

QModelIndex idxOfFirstItem = sourceModel->index( 0, 0 );

现在,由于用户能够对视图进行排序,我想从代理模型中获取第一个项目的索引:

QModelIndex idxOfFirstItem = sortFilterProxyModel->index( 0, 0 );

无论行和列是什么,我总是在这里获得无效索引。我做错了什么?

解决方案:

好的伙计们。我解决了这个问题。感谢您的所有意见,我意识到实施应该是正确的。所以我尝试了其他一些事情并意识到我有时间问题。我的实现尝试在模型仍然更新时从模型中检索数据。因此代理模型的源模型在更新期间无效。因此我没有有效的索引。添加睡眠后,实现工作正常。所以我必须在程序中同步一些事件。感谢您的灵感:)

0 个答案:

没有答案