PyQtは内のチェックボックスのリストビュー
-
21-08-2019 - |
質問
私は、各項目には、いくつかのラベルの付いたチェックボックスであるQListViewを表示したいです。チェックボックスが常に表示されるはずです。私は考えることができる一つの方法は、カスタムデリゲートとQAbstractListModelを使用しています。単純な方法はありますか?あなたはこれを行う最も簡単なスニペットを提供することができますか?
事前に感謝します。
解決
あなたがあなた自身のモデルを作成している場合は、単にQt.ItemIsUserCheckable
が含まれます
flags()
メソッドからの戻り値のフラグ、およびあなたが返すことを確認してください
Qt.CheckStateRole
方法からdata()
の有効な値ます。
QStandardItemModel
クラスを使用する場合は、、Qt.ItemIsUserCheckable
が含まれます
あなたは、各項目のsetFlags()
メソッドに渡し、チェックを設定し、それらの中のフラグ
そのQt.CheckStateRole
法にsetData()
ための状態。
インタラクティブPythonのセッションで、次のように入力します。
from PyQt4.QtGui import *
model = QStandardItemModel()
item = QStandardItem("Item")
item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
item.setData(QVariant(Qt.Checked), Qt.CheckStateRole)
model.appendRow(item)
view = QListView()
view.setModel(model)
view.show()
他のヒント
私はデビッドBoddie の中のPyQtのメーリングリストによって提供される方法を使用して終了しました。ここでは、作業スニペットは彼のコードに基づいています:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
from random import randint
app = QApplication(sys.argv)
model = QStandardItemModel()
for n in range(10):
item = QStandardItem('Item %s' % randint(1, 100))
check = Qt.Checked if randint(0, 1) == 1 else Qt.Unchecked
item.setCheckState(check)
item.setCheckable(True)
model.appendRow(item)
view = QListView()
view.setModel(model)
view.show()
app.exec_()
注:代わりに、フラグのsetData
をsetCheckState
して使用するには、このチェック役割をsetCheckable
の呼び出しを変更します。
所属していません StackOverflow