2009-01-07 448 views
2

從QTreeWidget中刪除行(QTreeWidgetItem)的最佳方式是什麼?從QTreeWidget中刪除行(qt編程)

的QTreeWidget內容已被設置:

myQTreeWidget->insertTopLevelItems(0, items); // items = QList<QTreeWidgetItem*> 

然後我從我的QList「項」刪除一個項目,我嘗試清除/重置QTreeWidget

packList->clear();  
packList->insertTopLevelItems(0, items); 

,但我的應用程序崩潰這裏! 建議?

回答

3

您的問題是致電packList->clear()刪除樹中包含的樹窗口小部件項目。 (請參閱關於QTreeWidget::clear()的文檔,其中包括有關在刪除之前從樹中刪除的項目的註釋。)您將需要找到一種方法來刪除項目,或者不要將它們與樹分開保存。

在略有相關的說明中,如果您試圖跟蹤其他數據以及樹,我建議您嘗試使用模型範例。在非平凡的情況下,通常我很有必要轉換爲該技術,而不是使用小部件/項目。

1

從什麼this documentation說,你應該能夠做到這一點的:

packList->takeTopLevelItem(index); 

它返回刪除並提供索引處返回的項目。