QStringListModel排序

时间:2010-05-05 07:12:50

标签: c++ qt

如何排序QStringListModel?

非常感谢。

3 个答案:

答案 0 :(得分:4)

使用sort方法。

答案 1 :(得分:2)

QStringListModel::sort()方法的替代方法是对存储在模型中的字符串列表使用QStringList::sort()方法。这种方法不如使用QStringListModel::sort()

那样有效
QStringList list = stringListModel->stringList();
list.sort();
stringListModel->setStringList(list);

答案 2 :(得分:2)

您可以使用QSortFilterProxyModel

QListView* view = new QListView;
QStringListModel* model = new QStringListModel(this);
QSortFilterProxyModel* proxyModel = new QSortFilterProxyModel(this);

proxyModel->setSourceModel(model);
view->setModel(proxyModel);

然后,您所要做的就是使用排序方法对代理模型进行排序:

void QSortFilterProxyModel::sort(
  int column, Qt::SortOrder order = Qt::AscendingOrder):

由于字符串列表模型只有一列:

proxyModel->sort(0);

此外,如果要在每次插入新行时对模型进行排序,可以使用连接对proxyModel进行排序:

connect(model, &QStringListModel::rowsInserted,
  this, [proxyModel](){ proxyModel->sort(0); });