質問

私はシグナルとスロットhookedupのカップルとの定期的なQListWidgetを持っています。私は期待どおりすべてが機能します。私は、などをクリアし、取得、更新することができます。

しかし、UIが複数選択をサポートして文句を言わない。

どのように私はQListWidgetための複数選択を[有効にする]のですか? PyQtはと私の限られた経験は、私がサブクラス化することで、カスタムQListWidgetを作成する必要があります..しかし、私に語った次は何?

Googleは私にC ++の答えを与えたが、私は、Python

を探しています

http://www.qtforum.org/article/26320/ qlistwidget-複数selection.htmlする

http://www.qtcentre.org/threads/11721-QListWidget-複数選択する

役に立ちましたか?

解決

残念ながら私は、Pythonの特定の構文で助けることはできませんが、あなたは、任意のサブクラスを作成する必要はありません。

あなたのQListWidgetが作成されると、渡された複数の選択型の1つを使用して、コール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