2011-07-27 11 views
2

C++のqtアプリケーションを記述しています。私はQTreeWidgetを作成しています。ユーザーは、そのツリー内のエントリを作成して削除する可能性があります。qt 4.7 removeChild()とメモリ

QTreeWidgetItem* newItem = new QTreeWidgetItem(); 

ユーザーが後からエントリを削除することを決定したとき、彼はその後、自身が呼び出す関数を呼び出します:

QTreeWidgetItem* curItem = _ui->qTreeWidget->currentItem(); 
QTreeWidgetItem* parent = curItem->parent(); 
parent->removeChild(curItem); 
をユーザーがアイテムを作成するときに そこで彼は、自身が呼び出す関数を呼び出します

私のために消去する質問は今です:このアイテムが占めていたメモリはどうですか?何のQt 4.7ドキュメントは、removeChildのに言うことは以下の通りです:

無効QTreeWidgetItem ::のremoveChild(QTreeWidgetItem *子) は、子供で示さ与えられた項目を削除します。削除されたアイテムは削除されません。

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

ありがとうございます! ドニー

+0

;'? –

+0

@Donny:あなたがSO(StackOverflow)に慣れ親しんでいることに気がついたので、まずこのサイトを歓迎します!あなたは[faq](http://stackoverflow.com/faq)を見ましたか?私はあなたがあなたの質問に対する答えのどれにも投票しなかったことに気付いたので、ただ尋ねているだけです。答えが役に立つと分かったら、答えの左側にある小さな三角形をクリックしてください。これはポスターに「評判」の報酬を与え、その答えが有用であることを示します。あなたがすでにSOの習慣に精通しており、目的に応じて投票しなかった場合は、このコメントを無視してください:)!とにかく、SOを楽しみましょう! –

答えて

2

どの程度

delete curItem; 

documentationによれば、デストラクタはそれが含まれているツリーからそのアイテムを削除しますので、あらかじめを実行する必要はありません。

2

あなたは通常、ちょうどで適切なタイミングで、あなたのオブジェクトを削除します:削除はちょうど親からのリンクを削除して

delete curItem; 

または多分deletion laterのためにそれをスケジュール:どのように `curItemを削除について

curItem->deleteLater(); 
+1

QTreeWidgetItemはQObjectではないので、その上でdeleteLater()を呼び出すことはできません。 – Chris

関連する問題