2014-09-12 87 views
0

我有一个Qt窗口小部件,它从组件外部(每几毫秒)更新一次。我添加了一个头到TreeView,我现在想的元素排序:Qt排序列

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

我可以点击标题和idems做得到排序,但一旦新的数据来源和填充树,我希望它自动更新。最简单的方法是什么?

干杯。

回答

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信号。