2

QTreeWidget から行 (QTreeWidgetItem) を削除する最良の方法は何ですか?

QTreeWidget のコンテンツは次のように設定されています。

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

次に、QListの「アイテム」からアイテムを削除し、QTreeWidgetをクリア/リセットしようとします

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

しかし、私のアプリはここでクラッシュします! 提案?

4

2 に答える 2

3

あなたの問題は、呼び出しpackList->clear()がツリーに含まれるツリー ウィジェット アイテムを削除することです。(削除する前にツリーからアイテムが削除されることについてのメモを含む、 に関するドキュメントを参照してくださいQTreeWidget::clear()。) アイテムを削除する方法を見つけるか、ツリーとは別にそれらのリストを保持しないようにする必要があります。

少し関連することですが、ツリーと一緒に他のデータを追跡しようとしている場合は、モデル パラダイムを使用することをお勧めします。些細なケースでは、通常、ウィジェット/アイテムを使用するのではなく、その手法に変換するのに時間をかける価値がありました。

于 2009-01-07T19:20:04.030 に答える
1

このドキュメントの内容から、次の方法で実行できるはずです。

packList->takeTopLevelItem(index);

指定されたインデックスのアイテムを削除して返します。

于 2009-01-07T19:19:39.473 に答える