我有几个信号和槽hookedup常规QListWidget。一切工作如我所料。我可以更新,检索,清除等

但是UI不会支持多个选择。

我如何“启用”为QListWidget多项选择?我与PyQt的有限的经验告诉我,我需要通过继承来创建自定义QListWidget ..但接下来呢?

谷歌给了我C ++的答案,但我在寻找的Python

http://www.qtforum.org/article/26320/ qlistwidget-多selection.html

http://www.qtcentre.org/threads/11721-QListWidget-多选

有帮助吗?

解决方案

可惜我不能使用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_()

输出: -

“在这里输入的图像描述”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top