如何排序QStringListModel?
非常感谢。
答案 0 :(得分:4)
使用sort
方法。
答案 1 :(得分:2)
QStringListModel::sort()
方法的替代方法是对存储在模型中的字符串列表使用QStringList::sort()
方法。这种方法不如使用QStringListModel::sort()
。
QStringList list = stringListModel->stringList();
list.sort();
stringListModel->setStringList(list);
答案 2 :(得分:2)
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); });