문제

각 항목이 레이블이있는 확인란 인 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 깃발 대신.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top