2012-02-22 241 views
5

如果頂層項目中沒有子節點,我正在嘗試刪除頂層樹部件項目。什麼是正確的方法來做到這一點?我似乎無法在Qt的文檔中找到API調用。調用頂級樹形構件項目上的刪除是否安全?我還沒有遇到任何問題,但我想知道這是否是安全的做法。非常感謝。如何從QTreeWidget中刪除頂層QTreeWidgetItem?

if(topLevelTreeWidgetItem->childCount() > 1) 
    topLevelTreeWidgetItem->removeChild(childItem); 
else 
{ 
    delete topLevelTreeWidgetItem; 
} 

回答

10

delete直接使用QTreeWidgetItem是非常安全的。

根據對~QTreeWidgetItem()的文檔:

銷燬此樹部件項目。該項目將從 QTreeWidgets中刪除。這可以隨時刪除 項目。

我在許多QTreeWidgetItems實踐中使用delete,它工作得很好。

+0

謝謝你確認這一點。我在我的QTreeWidget QTreeWidgetItem指針中創建了頂級項目,以便在我的代碼中引用它們。使它們成爲指針可以輕鬆刪除它們,並在需要時重新初始化它們。 – 2012-02-22 17:08:43

3

刪除頂級項調用QTreeWidget::takeTopLevelItem方法,然後刪除返回的項目:

delete treeWidget->takeTopLevelItem(index); 

如果指數是該項目的索引中刪除。