2017-09-05 60 views
0

?我知道位或工作方式上的電話號碼,但我不能使它的使用感在這裏:按位或物體

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_()) 
+1

如果你知道按位OR如何工作,那麼你應該知道獲取當前標誌,然後用一個新標誌對其進行OR運算,將會用原始標誌+新標誌創建一個新的標誌值。 – RvdK

回答

1

這些標誌被存儲爲2的冪,所以它們例如1, 2, 4, 8, ...。如果你將它們轉換成雙基地,你會看到它們爲0001, 0010, 0100, 1000, ...

如果你現在有標誌值item.flags(),並與按位或|QtCore.Qt.ItemIsEditable要創建一個新的價值,它具有(作爲一個例子)這雙基數表示結合起來:

flag:   10001100 
ItemIsEditable: 01000000 
------------------------ 
result:   11001100 

所以僅僅是正常按位或運算符,一個整數和Qt枚舉

的整數值這意味着之間尤其,如果item.flags()值已經存儲一些標誌,您可以使用此|運算符添加更多標誌,而不會取消設置/覆蓋之前設置標誌的信息;這允許您將關於多個標誌的信息存儲在一個整數值中。