在下面的代码中,在item.flags() | QtCore.Qt.ItemIsEditableQtCore
中使用按位或运算符如何防止item.flags
被覆盖?我知道按位OR是如何处理数字的,但我搞不懂它在这里的用法:
import sys
from PySide import QtCore, QtGui
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
app.setStyle("cleanLooks")
#Data
dataList = ["one", "two", "three", "four", "five"]
#Creating item based QlistWidget
listWidget = QtGui.QListWidget()
listWidget.addItems(dataList)
listWidget.show()
#Make all items of the listWidget editable
count = listWidget.count()
for i in range(count):
item = listWidget.item(i)
item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
#Creating item based QComboBox
comboBoxWidget = QtGui.QComboBox()
comboBoxWidget.addItems(dataList)
comboBoxWidget.show()
sys.exit(app.exec_())
这些标志存储为2的幂,例如
1, 2, 4, 8, ...
。如果你把它们转换成双基,你会看到它们是0001, 0010, 0100, 1000, ...
。你知道吗如果现在有了标志值
item.flags()
,并将其与按位或|
与QtCore.Qt.ItemIsEditable
组合,则创建了一个新值,该值具有(作为示例)这个双基表示:所以它只是一个普通的按位或运算符,介于整数和
Qt
枚举的整数值之间这特别意味着,如果
item.flags()
值已经存储了一些标志,则可以使用此|
运算符添加更多标志,而不必取消设置/覆盖先前设置的标志的信息;这允许您仅在一个整数值中存储有关多个标志的信息。你知道吗相关问题 更多 >
编程相关推荐