如何获取 QListWidget::selectedItems() 的索引?
Posted
技术标签:
【中文标题】如何获取 QListWidget::selectedItems() 的索引?【英文标题】:How can I get the indices of QListWidget::selectedItems()? 【发布时间】:2016-06-02 20:37:23 【问题描述】:我有QListWidget
,我需要获取所选项目的索引。 (我可以按值处理列表中的项目,但我有std::vector
,其中包含列表中每个项目的一些对象,我还需要从中删除它们。)
有一个函数indexFromItem
,但它是受保护的(?)所以我不能使用它。
有什么想法吗?
QList<QListWidgetItem *> itemList = lw1->selectedItems();
【问题讨论】:
不确定您的情况,但该索引适用于某些模型,并且 QListWidget 旨在处理单个项目而不是模型。你有 QListWidgetItem * itemAt(int x, int y) const 与 x 和 y 'indexes'。 您是在寻找QModelIndex
还是列表中项目的整数索引(即其位置)?
【参考方案1】:
你可以使用也许:
list->selectionModel()->selectedIndexes()
其中list
是QListWidget
的一个实例。
不确定它是否会返回您正在寻找的内容。
来自documentation:
返回所有选定模型项索引的列表。该列表不包含重复项,并且未排序。
QListWidget
也有一个名为selectedIndexes
的方法,但它是一个受保护的方法,所以你必须使用这种棘手的方法来获取它们。
【讨论】:
【参考方案2】:我不确定这是正确的方法,但它对我有用:
void ScannerWindow::on_ipList_itemDoubleClicked(QListWidgetItem *item)
qDebug() << ui->ipList->row(item);
其中ui->ipList
是QListWidget
【讨论】:
0) 您没有使用由 Creator 生成的插槽,是吗? 1) 问题是关于 selected 索引的,QListWidget
提供了不同类型的选择,但通常您可以选择多个项目,并且不仅可以通过双击它们来选择。 2)因此,您的解决方案仅适用于一行,只能通过双击选择。
0) 这个插槽是由 Creator 自动生成的 2) 是的,“双击”只是我的情况,但它也适用于 itemClicked(QListWidgetItem *item)
...我尝试选择多个排在QListWidget
我不能。
如果您将 selectionMode
更改为 SingleSelection/NoSelection 以外的任何内容,您将能够使用 Ctrl/Shift、箭头键并选择多个项目。更糟糕的是,可能没有点击每一个。以上是关于如何获取 QListWidget::selectedItems() 的索引?的主要内容,如果未能解决你的问题,请参考以下文章