2012-03-07 9 views
4

QListWidgetには、clear()という名前のメンバーがあります。このメソッドのドキュメントの状態:QListWidgetに含まれるQListItemWidgetsをすべて削除しなくても、QListWidgetを空にするにはどうすればいいですか?

void QListWidget::clear() [slot] 
Removes all items and selections in the view. 
Warning: All items will be permanently deleted. 

すべてのアイテムが完全に削除されないようにするにはどうすればよいですか?リストの内容をクリアして、別のデータで再設定できるようにしたい(ただし、ユーザーが選択した場合は、そのデータを再度表示する必要がある)。

答えて

9

QListWidget::takeItem

while(listwidget->count()>0) 
{ 
    listwidget->takeItem(0);//handle the item if you don't 
          //have a pointer to it elsewhere 
} 
+0

1あなたはQtの中の親に子を追加すると、親は子供を所有し、あなたのためにそれを削除します。子を削除したくない場合、takeItem()はそれを親から「取り戻し」ます。 takeItem()から返されたポインタを確実に保管してください。これは、今すぐ削除する(または後でリストに追加する)責任があるからです。 – aldo

関連する問題