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

11

我有一个包含一些项目的QListView。现在我想要获取所选项目的索引,例如如果我选择第5个元素,我应该得到5。我该如何做到这一点?

我有一个 `QListView` 控件,其中包含一些项。现在我想要获取所选项的索引,也就是如果我选择了第 5 个元素,我应该得到 5。请问如何实现?
2个回答

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

QItemSelectionModel * QAbstractItemView::selectionModel () const

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

请在此处查看:QItemSelectionModel

您会发现很多方法可以帮助您获取索引。

希望对您有所帮助!


安迪,我明白了,但是我发现selectedIndexes()会返回列表,我们需要迭代来获取modelindex。但是我希望有一个可以一次性获取所选项目的modelindex的API.. 迭代列表是耗时的,对吧..是否有直接的方法,还是我们只能这样做? - Naruto
是的,你有currentIndex()可以给你选择中的当前索引...我不知道你是否知道所选项目和当前索引之间的区别...当前索引是你选择的最后一个索引...所以我认为这将是你要找的东西... - Andy M
5
当前索引和所选索引之间可能存在重大差异。当前索引是列表中焦点所在的索引,它可能被选择或者未被选择。在我的公司,我们编写了一个快速包装函数来获取选择模型、获取选择列表,并且如果列表不为空,则返回列表中的第一项。这适用于那些禁止多选的列表,而且你只需要编写该函数一次即可。 - Caleb Huitt - cjhuitt
2
该链接似乎不可用(至少目前是这样)。因此,对于面临相同问题的所有人:我通过以下方式获取了当前选定项的索引: listWidget->selectionModel()->currentIndex().row() - CharlyDelta

0

这并不是一件容易的事情,因为QListView可以处理类似树形结构的数据。 你可以让列表项继承自QListViewItem,并添加一个额外的数据成员来保存索引。 当然,在排序时你需要重置这些索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接