2017-11-16 11 views
1

Ich befülle verschachtelte Listen in einem QTreeWidget, und ich muss die Auswahl der übergeordneten Zeilen deaktivieren.Auswahl der übergeordneten Zeilen in einem QTreeWidget deaktivieren

Der Code ist:

def fillTree(self): 
    ''' 
    Fill UI with list of parts 
    ''' 
    roots = ['APLE', 'ORANGE', 'MANGO'] 
    childs = ['body', 'seed', 'stern'] 
    parent = self.treeWidget.invisibleRootItem() 
    for root in roots: 
     widgetTrim = QTreeWidgetItem() 
     widgetTrim.setText(0, root) 
     parent.addChild(widgetTrim) 
     for child in childs: 
      widgetPart = QTreeWidgetItem() 
      widgetPart.setText(0, child) 
      widgetTrim.addChild(widgetPart) 

enter image description here

I Auswahl der "Frucht" Elemente vermeiden müssen.

+1

QTreeView oder QTreeWidget? ** QTreeWidgetItem ** – eyllanesc

+0

Haupt-Widget - QTreeWidget – kiryha

Antwort

1

Sie müssen Qt.ItemIsSelectable vom item-flags entfernen:

widgetTrim = QTreeWidgetItem() 
widgetTrim.setFlags(widgetTrim.flags() & ~Qt.ItemIsSelectable) 

Die Flaggen oder OR sind zusammen Kombination ItemFlag Werte. Daher wird eine bitwise AND NOT-Operation verwendet, um die ItemIsSelectable aus der bestehenden Kombination von Flags zu entfernen.

+0

Danke, das funktioniert! Was bedeutet das "& ~"? – kiryha

+1

@kiryha. Es ist bitweise UND NICHT. Die Flags werden OR-verknüpft, so dass alle aktuellen Flags verwendet werden, jedoch ohne das auswählbare Flag. – ekhumoro

Verwandte Themen