0

次のコードでビットごとの OR演算子を使用すると、上書きがitem.flags() | QtCore.Qt.ItemIsEditableQtCore防止されますか? item.flagsBitwise 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_())
4

1 に答える 1

1

これらのフラグは 2 の累乗として格納されるため、たとえば1, 2, 4, 8, .... これらをデュアルベースに変換すると、 と表示され0001, 0010, 0100, 1000, ...ます。

フラグ値がitem.flags()あり、それをビットごとに組み合わせるか、新しい値を作成|QtCore.Qt.ItemIsEditableている場合、(例として) このデュアルベース表現を持つ:

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

Qtしたがって、整数と列挙 型の整数値の間の通常のビット単位の OR 演算子です。

これは特に、値がすでにいくつかのフラグを格納している場合、以前に設定されたフラグの情報を設定解除/上書きすることなくitem.flags()、この演算子を使用してさらにフラグを追加できることを意味します。|これにより、複数のフラグに関する情報を 1 つの整数値に格納できます。

于 2017-09-05T15:09:28.507 に答える