QListWidget和多选

Jef*_*ose 16 python user-interface pyqt qlistwidget

我经常QListWidget有几个信号和插槽连接.一切都按照我的预期运作.我可以更新,检索,清除等

但UI不支持多种选择.

如何"启用"多项选择QListWidget?我对PyQt的有限经验告诉我,我需要QListWidget通过子类创建一个自定义..但接下来呢?

Google给了我C++答案,但我正在寻找Python

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

http://www.qtcentre.org/threads/11721-QListWidget-multi-selection

Arn*_*nce 20

不幸的是我无法使用Python特定的语法,但您不需要创建任何子类.

您之后QListWidget创建,调用setSelectionMode()与通过在多个选择类型中的一种,可能QAbstractItemView::ExtendedSelection是你想要的.您可能需要查看此模式的一些变体.

在你的插槽的itemSelectionChanged()信号,打电话selectedItems()得到QListQListWidgetItem指针.


小智 19

对于PyQT4来说

QListWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
Run Code Online (Sandbox Code Playgroud)


小智 7

使用多项选择在 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_()
Run Code Online (Sandbox Code Playgroud)

输出 :-

在此处输入图片说明


Mat*_*ato 6

使用 PyQt5,您可以使用以下方法设置 QListWidget 的 SelectionMode 以允许多项选择:

from PyQt5 import QtWidgets    


QtWidgets.QListWidget.setSelectionMode(2)
Run Code Online (Sandbox Code Playgroud)

在哪里

  • 选择模式 = 0 => 无选择
  • SelectionMode = 1 => 单选
  • SelectionMode = 2 => 多重选择
  • SelectionMode = 3 => 扩展选择
  • SelectionMode = 4 => 连续选择

参考

在 Qt Creator 中,您可以在此处找到此选项: 在此输入图像描述