我有QLineEdit
和QListView
。我使用QStringListModel
填充QListView
项目。
如果我在QLineEdit
中输入内容,我如何找到并选择QListView
中以我在QLineEdit
中输入的文字开头的项目?
答案 0 :(得分:5)
一般方法是:
textChanged
连接到您选择的插槽。model
)QAbstractItemModel
,其match
功能可用于搜索(documentation)match
作为匹配标记和相应的角色(显示角色)调用Qt::MatchStartsWith
,您将获得模型索引列表selectionModel
)获取选择模型,并使用调用select
产生的索引列表中的每个索引调用match
(某些可能)已被选中)提供更实用的建议。
匹配示例调用:
model->match(model->index(0, 0), Qt::DisplayRole, QVariant::fromValue(search_text), -1, Qt::MatchStartsWith);
从头到尾搜索列表视图的显示文本,并将其与搜索文本进行比较,并返回所有找到的匹配项,其中显示的文本以搜索文本开头。
选择示例调用:
model->selectionModel()->select(index, QItemSelectionModel::Select);
将选择索引(different flags可以取消选择或切换选择)。
迭代QModelIndexList
的示例,QList<QModelIndex>
是foreach(QModelIndex modelIndex, modelIndexList)
selectionModel->select(modelIndex, QItemSelectionModel::Select);
的快捷方式:
{{1}}