如何在 Qt 中获取选定的列表项索引

Posted

技术标签:

【中文标题】如何在 Qt 中获取选定的列表项索引【英文标题】:How to get selected listitem index in Qt 【发布时间】:2010-04-16 06:08:27 【问题描述】:

我有一个QListView,其中包含一些项目。现在我想获取所选项目的索引,即如果我选择第 5 个元素,我应该得到 5。我怎样才能得到这个?

【问题讨论】:

【参考方案1】:

在 Qt 的每个视图中,您都有以下方法:

QItemSelectionModel * QAbstractItemView::selectionModel () const

基本上,它返回一个模型,您可以在该模型上执行操作,例如获取选定的索引...

看看这里:QItemSelectionModel

您会找到很多方法来帮助您获取索引。

希望对你有帮助!

【讨论】:

安迪我明白了,但是我找到了selectedIndexes(),但是选择的索引会给出列表,我们需要迭代来获取模型索引。但是我想要一个 API,它可以一次性提供选定的项目模型索引。迭代列表很耗时。有没有直接的方法,或者我们只需要这样做 是的,你有 currentIndex() 可以在你的选择中为你提供当前索引...我不知道你是否知道所选项目和当前索引之间的区别...当前索引有点像您选择的最后一个索引...所以我认为这将是您正在寻找的... 当前索引和选定索引之间可能存在重大差异。当前一个是列表中具有焦点的那个,它可能会或可能不会被选中。在我的公司,我们做了一个快速包装函数来获取选择模型,获取选择列表,如果列表不为空,则返回列表中的第一项。这适用于设置为不允许多选的列表,并且您实际上只需要编写一次函数。 链接似乎不可用(至少目前如此)。所以对于面临同样问题的每个人:我得到了当前选定项目的索引,如下所示:listWidget->selectionModel()->currentIndex().row() 最终【参考方案2】:

没有简单的方法可以做到这一点,因为 QListView 可以处理树状结构。 您可以使列表项从 QListViewItem 派生并添加一个额外的数据成员来保存索引。 当然,您必须在排序时重置索引。

【讨论】:

以上是关于如何在 Qt 中获取选定的列表项索引的主要内容,如果未能解决你的问题,请参考以下文章

如何使用复选框和自定义适配器从 Listview 中获取选定的列表项?

如何在freemarker模板中按索引获取列表项?

如何获取包含多选列表中所有选定项目的字符串?

如何获取0-1背包中的选定物品列表?

如何在 Kendo 多选变量中获取选定的文本?

如何在文本块中显示列表框选定项