问题 如何在Qt中获取选定的listitem索引


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


2281
2018-04-16 06:08


起源



答案:


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

QItemSelectionModel * QAbstractItemView :: selectionModel()const

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

看看这里: QItemSelectionModel

你会发现很多方法可以帮助你获得索引。

希望能帮助到你!


16
2018-04-16 07:09



Andy我得到了它,但是我找到了selectedIndexes(),但是选中的索引会给出列表,我们需要迭代才能获得modelindex。但是我想要一个API,它可以一次性给出所选项目模型索引。迭代列表是非常耗时的..是任何直接的方式,或者我们只需要这样做 - Naruto
是的,你有currentIndex(),它将为你提供选择中的当前索引...我不知道你是否知道所选项目和当前索引之间的区别...当前索引是你选择的最后一个索引。 ..所以我认为这将是你正在寻找的...... - Andy M
是的,它的确有效 - Naruto
当前索引与所选索引之间可能存在重大差异。当前的一个是焦点在列表中的那个,它可能或 不得 被选中。在我公司,我们制作了一个快速包装函数来获取选择模型,获取选择列表,如果列表不为空,则返回列表中的第一个项目。这适用于设置为不允许多个选择的列表,并且您实际上只需要编写一次该函数。 - Caleb Huitt - cjhuitt
该链接似乎不可用(至少在目前)。所以对于遇到同样问题的每个人:我得到了当前所选项目的索引,如下所示: listWidget->selectionModel()->currentIndex().row() 终于 - CharlyDelta


答案:


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

QItemSelectionModel * QAbstractItemView :: selectionModel()const

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

看看这里: QItemSelectionModel

你会发现很多方法可以帮助你获得索引。

希望能帮助到你!


16
2018-04-16 07:09



Andy我得到了它,但是我找到了selectedIndexes(),但是选中的索引会给出列表,我们需要迭代才能获得modelindex。但是我想要一个API,它可以一次性给出所选项目模型索引。迭代列表是非常耗时的..是任何直接的方式,或者我们只需要这样做 - Naruto
是的,你有currentIndex(),它将为你提供选择中的当前索引...我不知道你是否知道所选项目和当前索引之间的区别...当前索引是你选择的最后一个索引。 ..所以我认为这将是你正在寻找的...... - Andy M
是的,它的确有效 - Naruto
当前索引与所选索引之间可能存在重大差异。当前的一个是焦点在列表中的那个,它可能或 不得 被选中。在我公司,我们制作了一个快速包装函数来获取选择模型,获取选择列表,如果列表不为空,则返回列表中的第一个项目。这适用于设置为不允许多个选择的列表,并且您实际上只需要编写一次该函数。 - Caleb Huitt - cjhuitt
该链接似乎不可用(至少在目前)。所以对于遇到同样问题的每个人:我得到了当前所选项目的索引,如下所示: listWidget->selectionModel()->currentIndex().row() 终于 - CharlyDelta


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


0
2018-04-16 06:56