Qt对列进行排序

Qt sort columns

本文关键字:排序 Qt      更新时间:2023-10-16

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

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

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

干杯。

为此使用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,所以你可以在连接timeout信号的插槽中使用sort()方法。