정확하게 위젯이 설정되었을 때 목록 항목이 상태를 변경하지 않는 이유가 확실하지 않습니다. 이 문제의 해결 방법은 위젯에 체크 박스를 추가하거나 listwidget의 itemClicked 신호에 연결하고 항목의 상태를 재설정하는 것입니다. Pls는 아래의 예를 들어 당신을 위해 일하는 것이 표시되는 경우이 도움이
import sys
from PyQt4 import QtGui, QtCore
class MainForm(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainForm, self).__init__(parent)
listWidget = QtGui.QListWidget()
item = QtGui.QListWidgetItem()
item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
item.setCheckState(QtCore.Qt.Unchecked)
listWidget.addItem(item)
widget = QtGui.QCheckBox('test')
item.setSizeHint(widget.sizeHint())
listWidget.setItemWidget(item, widget)
listWidget.itemClicked.connect(self.on_listWidget_itemClicked)
self.setCentralWidget(listWidget)
def on_listWidget_itemClicked(self, item):
if item.listWidget().itemWidget(item) != None:
if item.checkState() == QtCore.Qt.Checked:
item.setCheckState(QtCore.Qt.Unchecked)
else:
item.setCheckState(QtCore.Qt.Checked)
def main():
app = QtGui.QApplication(sys.argv)
form = MainForm()
form.show()
app.exec_()
if __name__ == '__main__':
main()
희망,
최후의 수단으로 사용할 수 있지만 차라리 이와 같은 해결 방법을 사용하지 않는 것이 좋습니다. – pafcu