QListWidgetと複数選択
-
25-09-2019 - |
質問
私はシグナルとスロットhookedupのカップルとの定期的なQListWidget
を持っています。私は期待どおりすべてが機能します。私は、などをクリアし、取得、更新することができます。
しかし、UIが複数選択をサポートして文句を言わない。
どのように私はQListWidget
ための複数選択を[有効にする]のですか? PyQtはと私の限られた経験は、私がサブクラス化することで、カスタムQListWidget
を作成する必要があります..しかし、私に語った次は何?
Googleは私にC ++の答えを与えたが、私は、Python
を探していますhttp://www.qtforum.org/article/26320/ qlistwidget-複数selection.htmlする
解決
残念ながら私は、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_()
出力: -
所属していません StackOverflow