在 QListWidget 中获取选定的行
Getting selected rows in QListWidget
我有一个 Qlistwidget
,我可以在其中 select 多个项目。我可以获得包含列表小部件中所有 selected 项目的列表,但找不到获取相应行列表的方法。要在 listwidget 中获取 selected 项目的列表,我使用了以下代码:
print [str(x.text()) for x in self.listWidget.selectedItems()]
要检索我要查找的行,例如:
a = self.listWidget.selectedIndexes()
print a
但这不起作用。我也尝试了一些代码,结果是这样的输出,这不是很有用:
<PyQt4.QtGui.QListWidgetItem object at 0x0000000013048B88>
<PyQt4.QtCore.QModelIndex object at 0x0000000014FBA7B8>
selectedIndexes 和 QModelIndex 应该是您所需要的。
liwidg = QtGui.QListWidget()
liwidg.show()
liwidg.setSelectionMode( QtGui.QAbstractItemView.SelectionMode.ExtendedSelection)
liwidg.addItems(["a", "b", "c", "d"])
liwidg.selectedIndexes()
选择'a','b','c' liwidg.selectedIndexes()给出:
[<PySide.QtCore.QModelIndex(0,0,0xb266478,QListModel(0xb0e6400) ) at 0x0C86EB20>,
<PySide.QtCore.QModelIndex(1,0,0xb266518,QListModel(0xb0e6400) ) at 0x0C861D78>,
<PySide.QtCore.QModelIndex(2,0,0xb2843c8,QListModel(0xb0e6400) ) at 0x0C869AF8>]
您可以使用 QModelIndex 获取您需要的任何信息。
sel0 = liwidg.selectedIndexes()[0]
# <PySide.QtCore.QModelIndex(0,0,0xb266478,QListModel(0xb0e6400) ) at 0x0C85B530>
print(sel0.data())
print(sel0.row())
print(sel0.column())
打印:
'a'
0
0
这对我有用。
奇怪的输出是因为您正在获取 QModelIndex
或 QListWidgetItem
类型的对象。 QModelIndex
对象有一个获取其行的方法,因此您可以使用:
[x.row() for x in self.listWidget.selectedIndexes()]
获取所有选定索引的列表。
我有一个 Qlistwidget
,我可以在其中 select 多个项目。我可以获得包含列表小部件中所有 selected 项目的列表,但找不到获取相应行列表的方法。要在 listwidget 中获取 selected 项目的列表,我使用了以下代码:
print [str(x.text()) for x in self.listWidget.selectedItems()]
要检索我要查找的行,例如:
a = self.listWidget.selectedIndexes()
print a
但这不起作用。我也尝试了一些代码,结果是这样的输出,这不是很有用:
<PyQt4.QtGui.QListWidgetItem object at 0x0000000013048B88>
<PyQt4.QtCore.QModelIndex object at 0x0000000014FBA7B8>
selectedIndexes 和 QModelIndex 应该是您所需要的。
liwidg = QtGui.QListWidget()
liwidg.show()
liwidg.setSelectionMode( QtGui.QAbstractItemView.SelectionMode.ExtendedSelection)
liwidg.addItems(["a", "b", "c", "d"])
liwidg.selectedIndexes()
选择'a','b','c' liwidg.selectedIndexes()给出:
[<PySide.QtCore.QModelIndex(0,0,0xb266478,QListModel(0xb0e6400) ) at 0x0C86EB20>,
<PySide.QtCore.QModelIndex(1,0,0xb266518,QListModel(0xb0e6400) ) at 0x0C861D78>,
<PySide.QtCore.QModelIndex(2,0,0xb2843c8,QListModel(0xb0e6400) ) at 0x0C869AF8>]
您可以使用 QModelIndex 获取您需要的任何信息。
sel0 = liwidg.selectedIndexes()[0]
# <PySide.QtCore.QModelIndex(0,0,0xb266478,QListModel(0xb0e6400) ) at 0x0C85B530>
print(sel0.data())
print(sel0.row())
print(sel0.column())
打印:
'a'
0
0
这对我有用。
奇怪的输出是因为您正在获取 QModelIndex
或 QListWidgetItem
类型的对象。 QModelIndex
对象有一个获取其行的方法,因此您可以使用:
[x.row() for x in self.listWidget.selectedIndexes()]
获取所有选定索引的列表。