Qt排序列
问题描述:
我有一个Qt窗口小部件,它从组件外部(每几毫秒)更新一次。我添加了一个头到TreeView,我现在想的元素排序:Qt排序列
treeView->header()->setClickable(true); treeView->header()->setSortIndicatorShown(true);
我可以点击标题和idems做得到排序,但一旦新的数据来源和填充树,我希望它自动更新。最简单的方法是什么?
干杯。
答
为此目的使用QSortFilterProxyModel
。
QTreeView *treeView = new QTreeView;
MyItemModel *sourceModel = new MyItemModel(this);
QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSourceModel(sourceModel);
treeView->setModel(proxyModel);
当您获取和设置新的数据,使用void QSortFilterProxyModel::sort (int column, Qt::SortOrder order = Qt::AscendingOrder)
方法
例如:
proxyModel->sort(1);
看来你使用QTimer
,这样你就可以在连接到槽使用sort()
方法timeout
信号。