1

我有一个派生自 的类QSortFilterProxyModel,但是当我单击表格视图的选项卡进行排序时,什么也没有发生。关于如何将排序功能添加到继承自的自定义类的任何建议QSortFilterProxyModel

4

1 回答 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 回答