10

トップレベルアイテム内に子ノードがない場合、トップレベルツリーウィジェットアイテムを削除しようとしています。これを行う正しい方法は何ですか?Qtのドキュメント内にAPI呼び出しが見つからないようです。トップレベルのツリーウィジェットアイテムでdeleteを呼び出すだけで安全ですか?まだ問題は発生していませんが、それが安全な方法かどうか知りたいです。どうもありがとう。

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

3 に答える 3

18

deleteQTreeWidgetItemを直接実行することは完全に安全です。

〜QTreeWidgetItem()のドキュメントによると:

このツリーウィジェットアイテムを破棄します。アイテムは、追加されたQTreeWidgetsから削除されます。これにより、いつでもアイテムを安全に削除できます。

私はdelete実際に多くのQTreeWidgetItemを使用してきましたが、非常にうまく機能します。

于 2012-02-22T16:48:03.187 に答える
5

トップレベルのアイテムを削除するには、QTreeWidget :: takeTopLevelItemメソッドを呼び出してから、返されたアイテムを削除します。

delete treeWidget->takeTopLevelItem(index);

ここで、indexは、削除するアイテムのインデックスです。

于 2012-02-22T09:41:15.683 に答える
2

関数takeChildは、QTreeWidgetItemでのみ機能します。QtreeWidgetを使用すると、QtreeWidget :: takeTopLevelItem(int index)を使用できます。

于 2014-05-06T12:19:18.083 に答える