Qt排序列

时间:2014-09-12 15:26:35

标签: c++ qt treeview

我有一个带有treeView的Qt小部件,它从组件外部(每几毫秒)更新一次。我已经在treeView中添加了一个标题,现在我想对元素进行排序:

treeView->header()->setClickable(true); treeView->header()->setSortIndicatorShown(true);

我可以单击标题并对标识符进行排序,但是一旦新数据到达并填充树,我希望它能自动更新。最简单的方法是什么?

干杯。

1 个答案:

答案 0 :(得分:0)

为此目的使用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方法。