代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Jose

QListWidget和多重选择

  •  14
  • Jeffrey Jose  · 技术社区  · 14 年前

    我有一个常客 QListWidget 有几个信号和插槽。一切如我所愿。我可以更新,检索,清除等。

    如何为“启用”多个选择 QListWidget软件 ? 我对PyQt的有限经验告诉我,我需要创建一个自定义 通过子类化。。但接下来呢?

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

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

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

    3 回复  |  直到 7 年前
        1
  •  20
  •   Arnold Spence    14 年前

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

    在你的 QListWidget setSelectionMode() 可能传入了多个选择类型之一 QAbstractItemView::ExtendedSelection 就是你想要的那个。这个模式有一些变化,你可能想看看。

    itemSelectionChanged() 信号,呼叫 selectedItems() 得到一个 QList 属于 QListWidgetItem

        2
  •  20
  •   Jeff M.    11 年前

    对于PyQT4来说

    QListWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
    
        3
  •  4
  •   Kumara Krishnappa    6 年前

    在具有多个选择的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_()
    

    enter image description here