Qtライブラリを使用してC++でアプリケーションを作成しています。セントラルウィンドウ(親)があり、必要に応じてすべての子供が立ち上げられます。これらのウィンドウは複数回開くことができますが、異なるデータを表示することができるので、オブジェクトをnew
と宣言しています。ここで私が持っているものの一例である:Qt親が閉じた後に変数を削除する親
Home_Window.hpp
は はView_Window *SomeWindow;
Home_Window.cpp
はvoid Home_Window::on_WindowButton_clicked()
{
SomeWindow = new View_Window();
SomeWindow->show();
}
私が何をしたいのか、オブジェクトを削除され、ときアプリケーションのメモリフットプリントを減らすためにウィンドウが閉じられます。私はすでに、メモリ使用量を減らすために子ウィンドウに含まれているすべてのオブジェクトを削除することができましたが、コアオブジェクトはまだ残っています.1日を通してユーザーが1000のウィンドウを開閉し、アプリケーションのフットプリントは、40〜50KBのメモリで、数MBのメモリから100 MBのメモリになります。
私はこれを達成するためのオンラインガイドを見つけることができませんでした。私はスロットと信号のペアを検討していましたが、ウィンドウが閉じているときに信号がQObject::destroyed()
に送信されることがわかっています。私はこのような信号とスロットのペアを設定しようとしていませんでしたか?
ご迷惑をおかけして申し訳ございません。
これはセットアップですが、View_Windowオブジェクトのコンストラクタで指定しました。いくつかのテストの後、私の心配は何もなかったように見えます。なぜなら、ウィンドウを開く回数が約8回、メモリ使用量が6.2MBから6.8MBになってしまい、そのあとウィンドウを開くたびにメモリは一定のままです。しかし、他の人にとっては非常に役に立ちます。 – humroben
これが当てはまる場合は、ちょっとしたコードを書き直す必要があります – humroben