我有一个 QListWidget,我想在其中添加一堆带有自定义小部件的项目:
listWidget = QListWidget()
item = QListWidgetItem()
item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
item.setCheckState(Qt.Unchecked)
listWidget.addItem(item)
widget = MyLabelAndPushButton()
item.setSizeHint(widget.sizeHint())
listWidget.setItemWidget(item, widget)
顾名思义,MyLabelAndPushButton 只是一个在布局中包含 QLabel 和 QPushButton 的小部件。问题是我不能使用出现在小部件旁边的列表小部件中的复选框。它看起来完全正常,但是当我单击它时没有任何反应。如果我使用 setItemWidget 删除该行,它可以正常工作。我究竟做错了什么?
编辑:
在bugreports.qt.io/browse/QTBUG-16386报告了错误,但得到了回复“API 不是为您打算做的事情而设计”和“如果您想显示自定义小部件,请使用 QListView 和子类 QItemDelegate。” 所以显然这不是一个错误,只是 API 无法处理的东西。