私はオブジェクトを動的に作成するメインウィンドウを持っているので、新しいスクリーンを作る前に、最初に最後のスクリーンからすべてのオブジェクトを削除しなければなりません。私はこれを使用していた、そしてそれは素晴らしい仕事をしていた:Qtウィンドウのすべての子を削除するには?
qDeleteAll(this->window->findChildren<QWidget*>());
をしかし、今、私はいくつかのQGraphicsView
とQGraphicsScene
を持ってこの画面を持っている、と私は同様に彼らの親のメインウィンドウを作った、そして今私はクラッシュを得たときにIメインウィンドウのすべての子を削除しようとします。
私の質問は基本的にどのようにこのクラッシュを避けることができますか? GraphicsScene
とGraphicsView
を含むメインウィンドウのすべての子を簡単かつ安全に削除するにはどうすればよいですか?
「子孫」を意味していますか?ただし、Qtウィジェットを削除する必要があるかどうかはわかりません。それらは参照カウントであるため、1つまたは複数を再利用する場合、それらを保持するコストはほとんどありません。 – casualcoder
QObjectsは削除時に子を削除しますが、QObjectシステムには参照カウントが組み込まれていません。メモリが適切に管理されていることを確認することは、プログラマの判断に任されています。 – Chris
これはうまくいきました。すべてのオブジェクトの親として使用するQWidgetを作成し、この新しいQWidgetの親ウィンドウをメインウィンドウにして、それを削除してすべてのオブジェクトを削除しました。 あなたはこのメモリの問題についてもっと話すことができますか?私は記憶がなくなることを保証するために何かをするべきですか?私のプログラムは組み込みシステムで動作しているので、メモリ管理は非常に重要です!どうも。 –