我有一个派生自 的类QSortFilterProxyModel
,但是当我单击表格视图的选项卡进行排序时,什么也没有发生。关于如何将排序功能添加到继承自的自定义类的任何建议QSortFilterProxyModel
?
问问题
152 次
1 回答
1
Qt 文档中对此进行了很好的解释。此链接指向 Qt 4.8 在线参考。
排序功能可以通过sort()
在模型中实现,或者通过使用 aQSortFilterProxyModel
来包装模型来实现。
根据您使用第二种方法的问题。该类QSortFilterProxyModel
提供了一个通用的sort()
重新实现,并且还允许通过子类QSortFilterProxyModel
化和重新实现该lessThan()
方法来实现自定义排序行为。
我的建议:
1-确保代理模型像代理一样工作。(它位于视图和真实模型的中间)。
QTreeView *treeView = new QTreeView;
MyItemModel *sourceModel = new MyItemModel(this);
QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSourceModel(sourceModel);
treeView->setModel(proxyModel);
2- 确保在视图中启用排序(默认值为false
)。
treeView->setSortingEnabled(true);
3-如果您需要重新实现成员,请确保您已正确完成。
我希望这有帮助。
于 2013-09-17T03:53:44.283 回答