2012-09-02 122 views
2

我想創建一個QTreeWidget,其中的項目都是可編輯和可發射。我想它的行爲類似於Windows資源管理器:QTreeWidget:Windows資源管理器,像編輯

單一的點擊 - >選擇

上對先前所選項目單一的點擊 - >打開LineEdit編輯名稱

雙擊 - >執行「起步」

因此,我創建插槽itemClicked()itemDoubleClicked()。第一個是以下內容:

def EditName(self, item, column): 
    if self.lastclick == item: 
     self.editItem(item) 
    self.lastclick = item 

第二個只是'啓動'該文件。

但是,這種解決方案不能區分雙擊和兩次連續點擊,因此雙擊後仍然出現QLineEdit。是否有可能擺脫編輯的強制?我試着像隱藏和顯示項目一劈解決方案,但沒有奏效。

回答

4

你只需要在你的QTreeWidgetItem設置標誌,以包括ItemIsEditable選項,並設置在QTreeWidget編輯觸發器SelectedClick

def populate(self, tree): 
    tree.setEditTriggers(tree.SelectedClicked) 
    for i in range(10): 
     item = QTreeWidgetItem(['Testing %02i' % i]) 
     item.setFlags(item.flags() | item.ItemIsEditable)