2

私はc++qtアプリケーションを書いています。ある部分では、QTreeWidgetを作成しています。ユーザーは、そのツリーでエントリを作成および削除するすべての可能性があります。したがって、ユーザーがアイテムを作成すると、関数が呼び出され、それ自体が次の関数を呼び出します。

QTreeWidgetItem* newItem = new QTreeWidgetItem();

ユーザーが後でエントリを削除することを決定した場合、ユーザーは関数を呼び出し、それ自体が次の関数を呼び出します。

QTreeWidgetItem* curItem = _ui->qTreeWidget->currentItem();
QTreeWidgetItem* parent = curItem->parent();
parent->removeChild(curItem);

私にとって消し去られる質問は今です:このアイテムが占めていた記憶はどうですか?Qt 4.7ドキュメントがremoveChildに言っていることは、次のとおりです。

void QTreeWidgetItem :: removeChild(QTreeWidgetItem * child) 子で示された指定されたアイテムを削除します。削除されたアイテムは削除されません。

では、どうすれば子を削除できますか?

よろしくお願いします!ドニー

4

2 に答える 2

2

どうですか

delete curItem;

ドキュメントによると、デストラクタはアイテムが含まれているツリーからアイテムを削除するので、removeChild事前に実行する必要さえないと思います。

于 2011-07-27T12:35:11.833 に答える
1

通常は、次の方法で適切なタイミングでオブジェクトを削除します。

delete curItem;

removeは、親からリンクを削除するだけです。

または、後で削除するようにスケジュールします。

curItem->deleteLater();
于 2011-07-27T12:35:23.587 に答える