从QPushButton项目小部件复制QTreeWidgetItem

时间:2016-08-01 22:51:31

标签: python pyqt qtreewidgetitem

如果在其中按下按钮,我想复制QTreeWidgetItem。

到目前为止,我已经:

def Copy(self):
    obj = self.sender()

self.Tree = qt.QTreeWidget(self)
self.Tree.setHeaderLabels(["Name"])  

item = qt.QTreeWidgetItem("Name") 
self.Tree.addTopLevelItem(item)

childItem = qt.QTreeWidgetItem("Name") #<------- This I'd like to copy

item.addChild(childItem)

bttn = qt.QPushButton("Copy This Widget", self)
bttn.clicked.connect(self.Copy)

self.Tree.setItemWidget(childItem, 1, bttn)

我希望能够复制childItem,以便我可以将其放在QTreeWidget中。

1 个答案:

答案 0 :(得分:1)

没有直接从其item-widget获取QTreeWidgetItem的方法,因此您必须在某处明确地存储索引,以便以后可以访问它。

执行此操作的一种方法是将索引添加到item-widget作为属性:

bttn = qt.QPushButton("Copy This Widget", self)
index = QtCore.QPersistentModelIndex(self.Tree.indexFromItem(childItem))
bttn.setProperty('index', index)    

...

def Copy(self):
    index = self.sender().property('index')
    if index.isValid():
        copyItem = qt.QTreeWidgetItem(self.Tree.itemFromIndex(index))