2024-04-19 04:50:32 发布
网友
我最终使用了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_()
注意:将带有check角色的setData的调用更改为setCheckState,并使用setCheckable而不是标志。
setData
setCheckState
setCheckable
如果您正在编写自己的模型,只需包含Qt.ItemIsUserCheckable 标记来自flags()方法的返回值,并确保返回 来自data()方法的Qt.CheckStateRole的有效值。
Qt.ItemIsUserCheckable
flags()
data()
Qt.CheckStateRole
如果使用QStandardItemModel类,请包括Qt.ItemIsUserCheckable 标记您传递给每个项的setFlags()方法的对象,并设置检查 使用其setData()方法的Qt.CheckStateRole的状态。
QStandardItemModel
setFlags()
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邮件列表中David Boddie提供的方法。下面是一个基于他的代码的工作片段:
注意:将带有check角色的
setData
的调用更改为setCheckState
,并使用setCheckable
而不是标志。如果您正在编写自己的模型,只需包含
Qt.ItemIsUserCheckable
标记来自flags()
方法的返回值,并确保返回 来自data()
方法的Qt.CheckStateRole
的有效值。如果使用
QStandardItemModel
类,请包括Qt.ItemIsUserCheckable
标记您传递给每个项的setFlags()
方法的对象,并设置检查 使用其setData()
方法的Qt.CheckStateRole
的状态。在交互式Python会话中,键入以下内容:
相关问题 更多 >
编程相关推荐