2016-05-27 14 views
0

enter image description hereWie QTreeWidgetItem bearbeiten, wenn es bearbeitet werden kann

Wenn das Element doppelgeklickt und der Benutzer gibt ein neues Element Name, den ich diesen Text Wert wollen die item._name Attribut zugeordnet werden, die onClick gedruckt wird. Wie erreiche ich das?

from PyQt4 import QtCore, QtGui 
app = QtGui.QApplication([]) 

class Tree(QtGui.QTreeWidget): 
    def __init__(self, *args, **kwargs): 
     super(Tree, self).__init__() 
     for i, item_name in enumerate(['Item_1','Item_2','Item_3','Item_4','Item_5']): 
      rootItem = QtGui.QTreeWidgetItem() 
      rootItem.setFlags(rootItem.flags() | QtCore.Qt.ItemIsEditable) 
      rootItem._name = 'Root %s'%i 
      rootItem.setText(0, rootItem._name)  

      for number in range(3): 
       childItem = QtGui.QTreeWidgetItem(rootItem) 
       childItem.setFlags(rootItem.flags() | QtCore.Qt.ItemIsEditable) 
       childItem._name = 'Child %s'%number 
       childItem.setText(0, childItem._name) 

      self.addTopLevelItem(rootItem) 
     self.clicked.connect(self.onClick) 
     self.show() 
    def onClick(self, index): 
     print self.currentItem()._name 

tree=Tree() 
app.exec_() 

Antwort

0

enter image description here

Subclass QTreeWidgetItem. Definieren Sie die Methode , um den Wert dem Attribut _name zuzuweisen.

from PyQt4 import QtCore, QtGui 
app = QtGui.QApplication([]) 

class TreeWidgetItem(QtGui.QTreeWidgetItem): 
    def __init__(self, parent=None): 
     super(TreeWidgetItem, self).__init__(parent) 

    def setData(self, column, role, value): 
     super(TreeWidgetItem, self).setData(column, role, value) 
     self._name = value.toString() 

class Tree(QtGui.QTreeWidget): 
    def __init__(self, *args, **kwargs): 
     super(Tree, self).__init__() 
     for i, item_name in enumerate(['Item_1','Item_2','Item_3','Item_4','Item_5']): 
      rootItem = TreeWidgetItem(self) 
      rootItem.setFlags(rootItem.flags() | QtCore.Qt.ItemIsEditable) 
      rootItem._name = 'Root %s'%i 
      rootItem.setText(0, rootItem._name)  

      for number in range(3): 
       childItem = TreeWidgetItem(rootItem) 
       childItem.setFlags(rootItem.flags() | QtCore.Qt.ItemIsEditable) 
       childItem._name = 'Child %s'%number 
       childItem.setText(0, childItem._name) 

      self.addTopLevelItem(rootItem) 

     self.clicked.connect(self.onClick) 
     self.show() 

    def onClick(self, index): 
     print self.currentItem()._name 
Verwandte Themen