2016-08-01 29 views
0

我想複製QTreeWidgetItem,如果在其中按下按鈕。從QPushButton項目組件複製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

沒有直接的方法可以從項目窗口小部件中獲取QTreeWidgetItem,因此您必須將索引明確地存儲在某個地方,以便以後可以訪問它。要做到這一點

一種方法是將索引添加到項目的小部件的屬性:

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)) 
+0

嗯,我試圖複製該按鈕被按下,從該QTreeWidgetItem。 – vandelay

+0

@vandelay。你的問題還不清楚,但看到我更新的答案。 – ekhumoro