如何查看PySide.QtCore.Qt.ItemFlag的值

5 投票
2 回答
2667 浏览
提问于 2025-04-18 14:47

我好像搞不清楚怎么把一个 ItemFlag 对象的内容打印出来:

<ItemFlags object at 0x0000000002A6C5A0>

它看起来就像一个不透明的东西。我是不是漏掉了什么?

2 个回答

1

我也想知道所有可用的值,所以我写了一个简单的Python3脚本,供有兴趣的人参考:

from PySide.QtCore import Qt

#0
flags = Qt.NoItemFlags
print('NoItemFlags = %s' % int(flags))
#1
flags = Qt.ItemIsSelectable
print('ItemIsSelectable = %s' % int(flags))
#2
flags = Qt.ItemIsEditable
print('ItemIsEditable = %s' % int(flags))
#4
flags = Qt.ItemIsDragEnabled
print('ItemIsDragEnabled = %s' % int(flags))
#8
flags = Qt.ItemIsDropEnabled
print('ItemIsDropEnabled = %s' % int(flags))
#16
flags = Qt.ItemIsUserCheckable
print('ItemIsUserCheckable = %s' % int(flags))
#32
flags = Qt.ItemIsEnabled
print('ItemIsEnabled = %s' % int(flags))
#64
flags = Qt.ItemIsTristate
print('ItemIsTristate = %s' % int(flags))

输出结果是这样的:

NoItemFlags = 0
ItemIsSelectable = 1
ItemIsEditable = 2
ItemIsDragEnabled = 4
ItemIsDropEnabled = 8
ItemIsUserCheckable = 16
ItemIsEnabled = 32
ItemIsTristate = 64

我在处理别人的代码时,发现里面硬编码了一个值33,这让我有点困惑。其实这个值只是表示“可以选择的项目”和“启用的项目”这两个选项在一行里都被打开了。这样写对将来的用户来说就不太清楚了。希望这能帮助到其他人。@Jason S,你的回答也很有帮助,感谢你的分享。

6

没关系,我搞定了,我可以直接把它转换成整数:

flags = Qt.ItemIsEditable
print 'ItemIsEditable = %s' % int(flags)

这样就会输出

ItemIsEditable = 2

撰写回答