Dies deaktiviert Zeilen mit allen Kindern (anders als die anderen Antwort).
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class TREEWIDGET (QtGui.QWidget):
def __init__(self):
super(TREEWIDGET, self).__init__()
self.initUI()
def initUI(self):
self.treeWidget = QtGui.QTreeWidget(self)
self.treeWidget.setGeometry(QtCore.QRect(10, 10, 311, 321))
self.treeWidget.setObjectName('treeWidget')
self.treeWidget.setSelectionMode (QtGui.QAbstractItemView.ExtendedSelection)
self.button_disable = QtGui.QPushButton(self)
self.button_disable.setGeometry(QtCore.QRect(20, 340, 121, 23))
self.button_disable.setObjectName('pushButton')
self.button_disable.setText ('Disable')
self.button_enable = QtGui.QPushButton(self)
self.button_enable.setGeometry(QtCore.QRect(160, 340, 111, 23))
self.button_enable.setObjectName('pushButton')
self.button_enable.setText ('Ensable All')
self.button_disable.clicked.connect (self.disable)
self.button_enable.clicked.connect (self.enable)
self.resize(350, 400)
self.addItems()
self.show()
def addItems (self) :
parentA = QtGui.QTreeWidgetItem (self.treeWidget)
parentA.setText (0, 'Joint1')
parentA.setExpanded (1)
cParentA = parentA
for loop in range (2, 6) :
childA = QtGui.QTreeWidgetItem (cParentA)
childA.setText (0, 'Joint' + str(loop))
childA.setExpanded (1)
cParentA = childA
parentB = QtGui.QTreeWidgetItem (self.treeWidget)
parentB.setText (0, 'Joint_1')
parentB.setExpanded (1)
cParentB = parentB
for loop in range (2, 6) :
childB = QtGui.QTreeWidgetItem (cParentB)
childB.setText (0, 'Joint_' + str(loop))
childB.setExpanded (1)
cParentB = childB
def disable (self) :
selectedItem = self.treeWidget.selectedItems()
for eachItem in selectedItem :
eachItem.setDisabled (1)
eachItem.setSelected (0)
def enable (self) :
self.allItemElements = []
widget = self.treeWidget.invisibleRootItem()
existsItems = self.collectItems (widget)
if existsItems :
for eachItem in existsItems :
eachItem.setDisabled (0)
def collectItems (self, widget) :
itemCount = widget.childCount()
for itLoop in range (0, itemCount, 1) :
self.allItemElements.append (widget.child(itLoop))
self.collectItems (widget.child(itLoop))
return self.allItemElements
def main():
app = QtGui.QApplication(sys.argv)
ex = TREEWIDGET()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Haben Sie schon hier sah: http://doc.qt.io/qt-4.8/qtreewidget.html oops, dass geschrieben, bevor ich .. und hier zu Ende bringen konnte: http : //doc.qt.io/qt-4.8/qtreewidgetitem.html Blick auf 'itemAt()' in 'QTreeWidget' und' setDisabled' in 'QTreeWidgetItem' –
@busfault OP verwendet qabstractitemmodel ... Das heißt, OP sollte klarer sein: mit "behindert" meinst du zeigen, aber nicht wählbar sein? Oder nicht zeigen? Ein kleines, eigenständiges Beispiel könnte helfen (http://stackoverflow.com/help/mcve). Obwohl ich denke, dass das wichtigste hier ist, ist eine präzisere Beschreibung dessen, was Sie unter "behindert" verstehen. – neuronet
Danke Jungs für die Antwort! Und tut mir leid, dass ich nicht klar bin. Ich habe versucht, die Hierarchie zu verwenden, um eine Eltern-Kind-Beziehung darzustellen. Wenn ich mit der rechten Maustaste auf joint2 klicke, habe ich zwei Aktionen "enable, disable". Ich klicke auf "disable" und joint2 und seine Kinder sind ausgegraut, aber sichtbar und rechtsklickbar. Wenn ich dann rechts auf joint2 klicke und "enable" wähle, sind joint2 und seine Kinder grün und können wieder ausgewählt/editiert werden. – user3042801