如何获取 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()

其中listQListWidget 的一个实例。 不确定它是否会返回您正在寻找的内容。

来自documentation:

返回所有选定模型项索引的列表。该列表不包含重复项,并且未排序。

QListWidget 也有一个名为selectedIndexes 的方法,但它是一个受保护的方法,所以你必须使用这种棘手的方法来获取它们。

【讨论】:

【参考方案2】:

我不确定这是正确的方法,但它对我有用:

void ScannerWindow::on_ipList_itemDoubleClicked(QListWidgetItem *item)

    qDebug() << ui->ipList->row(item);

其中ui-&gt;ipListQListWidget

【讨论】:

0) 您没有使用由 Creator 生成的插槽,是吗? 1) 问题是关于 selected 索引的,QListWidget 提供了不同类型的选择,但通常您可以选择多个项目,并且不仅可以通过双击它们来选择。 2)因此,您的解决方案仅适用于一行,只能通过双击选择。 0) 这个插槽是由 Creator 自动生成的 2) 是的,“双击”只是我的情况,但它也适用于 itemClicked(QListWidgetItem *item) ...我尝试选择多个排在QListWidget 我不能。 如果您将 selectionMode 更改为 SingleSelection/NoSelection 以外的任何内容,您将能够使用 Ctrl/Shift、箭头键并选择多个项目。更糟糕的是,可能没有点击每一个。

以上是关于如何获取 QListWidget::selectedItems() 的索引?的主要内容,如果未能解决你的问题,请参考以下文章

JS如何获取OBJECT的值

js如何获取某一个元素,如果获取不到就继续获取,直到获取到后停止获取?

Groovy如何获取访问地址

js如何获取时间

js如何获取地址栏加密参数

webbrowser如何获取cookie中的sessionid