Python PyQt中复选框的列表视图
我想显示一个QListView,其中每个项目都是带有一些标签的复选框。复选框应始终可见。我可以想到的一种方法是使用自定义委托和QAbstractListModel。有更简单的方法吗?您能提供最简单的代码片段来实现这一点吗Python PyQt中复选框的列表视图,python,qt,pyqt,qitemdelegate,qlistview,Python,Qt,Pyqt,Qitemdelegate,Qlistview,我想显示一个QListView,其中每个项目都是带有一些标签的复选框。复选框应始终可见。我可以想到的一种方法是使用自定义委托和QAbstractListModel。有更简单的方法吗?您能提供最简单的代码片段来实现这一点吗 提前感谢如果您正在编写自己的模型,只需包含Qt.ItemIsUserCheckable 在flags()方法的返回值中标记,并确保返回 来自data()方法的Qt.CheckStateRole的有效值 如果您使用QStandardItemModel类,请包括Qt.ItemIsU
提前感谢如果您正在编写自己的模型,只需包含
Qt.ItemIsUserCheckable
在flags()
方法的返回值中标记,并确保返回
来自data()
方法的Qt.CheckStateRole
的有效值
如果您使用QStandardItemModel
类,请包括Qt.ItemIsUserCheckable
标记传递给每个项的setFlags()
方法的内容,并设置检查
Qt.CheckStateRole
及其setData()方法的状态
在交互式Python会话中,键入以下内容:
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邮件列表中提供的方法。下面是一个基于他的代码的工作片段:
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
而不是标志。切换此类项/复选框时会发出什么信号(如果有)?回答我自己,model.itemChanged
可以使用,如下所示:什么信号(如果有)当该项/复选框高亮显示但未切换时,是否会发出?