PYQT에서 확인란의 목록보기
-
21-08-2019 - |
문제
각 항목이 레이블이있는 확인란 인 QlistView를 표시하고 싶습니다. 확인란은 항상 표시되어야합니다. 내가 생각할 수있는 한 가지 방법은 사용자 정의 대의원 및 QabstractListModel을 사용하는 것입니다. 더 간단한 방법이 있습니까? 가장 간단한 스 니펫을 제공 할 수 있습니까?
미리 감사드립니다
해결책
자신의 모델을 작성하는 경우 Qt.ItemIsUserCheckable
로부터의 반환 값의 플래그 flags()
방법, 그리고 당신이 Qt.CheckStateRole
~로부터 data()
방법.
당신이 사용하는 경우 QStandardItemModel
클래스, 포함 Qt.ItemIsUserCheckable
각 항목에 전달되는 사람들의 깃발 setFlags()
방법을 설정하고 확인 상태를 설정하십시오 Qt.CheckStateRole
그것으로 setData()
방법.
대화식 파이썬 세션에서 다음을 입력하십시오.
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()
다른 팁
내가 제공 한 방법을 사용하여 결국 David 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