Python中文
首页
教程
问答
标签
搜索
登录
注册
PyQt QAbstractListModel似乎忽略了三态标志
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我已经尝试了几天来弄清楚为什么我的QAbstractLisModel不允许用户在三种状态下切换可检查项。模型在flags()方法中返回<code>Qt.IsTristate</code>和<code>Qt.ItemIsUserCheckable</code>,但仅当程序运行时Qt.已检查以及Qt.未检查在编辑时切换。在</p> <pre><code>class cboxModel(QtCore.QAbstractListModel): def __init__(self, parent=None): super(cboxModel, self).__init__(parent) self.cboxes = [ ['a',0], ['b',1], ['c',2], ['d',0] ] def rowCount(self,index=QtCore.QModelIndex()): return len(self.cboxes) def data(self,index,role): if not index.isValid: return QtCore.QVariant() myname,mystate = self.cboxes[index.row()] if role == QtCore.Qt.DisplayRole: return QtCore.QVariant(myname) if role == QtCore.Qt.CheckStateRole: if mystate == 0: return QtCore.QVariant(QtCore.Qt.Unchecked) elif mystate == 1: return QtCore.QVariant(QtCore.Qt.PartiallyChecked) elif mystate == 2: return QtCore.QVariant(QtCore.Qt.Checked) return QtCore.QVariant() def setData(self,index,value,role=QtCore.Qt.EditRole): if index.isValid(): self.cboxes[index.row()][1] = value.toInt()[0] self.emit(QtCore.SIGNAL("dataChanged(QModelIndex,QModelIndex)"), index, index) print self.cboxes return True return False def flags(self,index): if not index.isValid(): return QtCore.Qt.ItemIsEditable return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsTristate </code></pre> <p>你可以用这个来测试</p> ^{pr2}$ <p>并确保只有2个州可用。我想我缺少一些简单的东西。有什么想法吗?谢谢!在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您可能需要在clicked()信号上创建一个自定义槽,该槽在三个状态之间循环。通常,三态元素只能直接点击打开和关闭,并且只有在子元素处于不同状态时才处于部分选中模式。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
1 回答
无法使用Django\u mssql\u后端迁移到外部hos
2 回答
无法使用Django&Python3.4连接到MySql
10 回答
无法使用Django+nginx上载媒体文件
5 回答
无法使用Django1.6导入名称模式
9 回答
无法使用Django1.7和mongodb登录管理站点
9 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
3 回答
无法使用Djangockedi验证CBV中的字段
5 回答
无法使用Djangocketditor上载图像(错误400)
10 回答
无法使用Djangocron进行函数调用
6 回答
无法使用Djangofiler djang上载文件
2 回答
无法使用Djangokronos
4 回答
无法使用Djangomssql provid
7 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
4 回答
无法使用Djangomssq迁移Django数据库
9 回答
无法使用Djangonox创建用户
6 回答
无法使用Djangopyodb从Django查询SQL Server
4 回答
无法使用Djangopython3ldap连接到ldap
4 回答
无法使用Djangoredis连接到redis
5 回答
无法使用Django中的FK创建新表
3 回答