QListView를 표시하려면 각 항목이 일부 레이블이있는 체크 상자 여야합니다. 확인란은 항상 표시되어야합니다. 내가 생각할 수있는 한 가지 방법은 사용자 지정 대리자와 QAbstractListModel을 사용하는 것입니다. 더 간단한 방법이 있습니까? 이 작업을 수행하는 가장 간단한 미리보기를 제공 할 수 있습니까? 사전에PyQt의 체크 박스 목록보기
덕분에
QListView를 표시하려면 각 항목이 일부 레이블이있는 체크 상자 여야합니다. 확인란은 항상 표시되어야합니다. 내가 생각할 수있는 한 가지 방법은 사용자 지정 대리자와 QAbstractListModel을 사용하는 것입니다. 더 간단한 방법이 있습니까? 이 작업을 수행하는 가장 간단한 미리보기를 제공 할 수 있습니까? 사전에PyQt의 체크 박스 목록보기
덕분에
당신이 당신의 자신의 모델을 작성하는 경우, 단지 flags()
방법의 반환 값의 Qt.ItemIsUserCheckable
플래그를 포함하고 data()
방법에서 Qt.CheckStateRole
에 대한 유효한 값을 반환 할 수 있도록 .
당신이 QStandardItemModel
클래스를 사용하는 경우
setFlags()
방법에 전달할들에
Qt.ItemIsUserCheckable
플래그를 포함, 그
setData()
방법으로
Qt.CheckStateRole
에 대한 검사 상태를 설정합니다. 대화 형 파이썬 세션에서
다음을 입력 :
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()
은 내가 PyQt는 메일 링리스트에 David Boddie에서 제공하는 방법을 사용하여 끝났다.
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_()
참고 : 여기에 자신의 코드를 기반으로 작업 조각입니다 setCheckState
에 체크 역할 setData
의 전화를 변경하는 대신 플래그 setCheckable
을 사용했다.
해당 항목/체크 박스를 토글 할 때 어떤 신호가 방출됩니까? – marcin
에 대한 답을 얻으려면 다음과 같이 'model.itemChanged'를 사용할 수 있습니다. http://www.pythoncentral.io/pyside-pyqt-tutorial-qlistview-and-qstandarditemmodel/ – marcin