其他分享
首页 > 其他分享> > c – 如何从QListView中搜索和选择项目?

c – 如何从QListView中搜索和选择项目?

作者:互联网

我有一个QLineEdit和一个QListView.我使用QStringListModel用项填充QListView.

如果我在QLineEdit中输入内容,我怎样才能从QListView中找到并选择一个以我在QLineEdit中输入的文本开头的项目?

解决方法:

一般方法是:

>将行编辑的信号textChanged连接到您选择的插槽.
>在此插槽中访问列表视图的模型(要么已将其存储,要么在列表视图中使用模型)
>该模型继承自QAbstractItemModel,它具有搜索匹配功能(documentation)
>使用Qt :: MatchStartsWith作为匹配标志和相应的角色(显示角色)调用匹配,您将获得模型索引列表
>结果可以是零个,一个或多个索引.
>从模型的列表视图(selectionModel)中获取选择模型,并使用匹配调用产生的索引列表中的每个索引调用select(某些可能已被选中)

提供一些更实用的建议.

匹配示例调用:

model->match(model->index(0, 0), Qt::DisplayRole, QVariant::fromValue(search_text), -1, Qt::MatchStartsWith);

这将从开始到结束进行搜索,获取列表视图的显示文本并将其与搜索文本进行比较,并返回所有找到的匹配项,其中显示的文本以搜索文本开头.

示例调用选择:

model->selectionModel()->select(index, QItemSelectionModel::Select);

这将选择索引(使用different flags可以取消选择或切换选择).

迭代QModelIndexList的示例,QModelIndexList是QList< QModelIndex>的快捷方式:

foreach(QModelIndex modelIndex, modelIndexList)
  selectionModel->select(modelIndex, QItemSelectionModel::Select);

标签:qlineedit,c,qt,qlistview
来源: https://codeday.me/bug/20190830/1765748.html