QListWidget和多选
-
25-09-2019 - |
题
我有几个信号和槽hookedup常规QListWidget
。一切工作如我所料。我可以更新,检索,清除等
但是UI不会支持多个选择。
我如何“启用”为QListWidget
多项选择?我与PyQt的有限的经验告诉我,我需要通过继承来创建自定义QListWidget
..但接下来呢?
谷歌给了我C ++的答案,但我在寻找的Python
http://www.qtforum.org/article/26320/ qlistwidget-多selection.html
解决方案
可惜我不能使用Python特定语法的帮助,但你不需要建立任何的子类。
在创建QListWidget
后,呼叫setSelectionMode()
在通过了多项选择类型中的一种,可能QAbstractItemView::ExtendedSelection
是你想要的。有关于这个模式有一些变化,你可能想看看。
在您的时隙为itemSelectionChanged()
信号,呼叫selectedItems()
得到QList
指针的QListWidgetItem
。
其他提示
有关PyQt4的它的
QListWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
与多个选择获得在listWidget多个选择值的实施例。
from PyQt5 import QtWidgets, QtCore
class Test(QtWidgets.QDialog):
def __init__(self, parent=None):
super(Test, self).__init__(parent)
self.layout = QtWidgets.QVBoxLayout()
self.listWidget = QtWidgets.QListWidget()
self.listWidget.setSelectionMode(
QtWidgets.QAbstractItemView.ExtendedSelection
)
self.listWidget.setGeometry(QtCore.QRect(10, 10, 211, 291))
for i in range(10):
item = QtWidgets.QListWidgetItem("Item %i" % i)
self.listWidget.addItem(item)
self.listWidget.itemClicked.connect(self.printItemText)
self.layout.addWidget(self.listWidget)
self.setLayout(self.layout)
def printItemText(self):
items = self.listWidget.selectedItems()
x = []
for i in range(len(items)):
x.append(str(self.listWidget.selectedItems()[i].text()))
print (x)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
form = Test()
form.show()
app.exec_()
输出: -
不隶属于 StackOverflow