QPointers新しい UI ダイアログ (ウィジェット) を表示するために使用する Qt アプリがあります。メイン アプリには、異なるデータをロードした同じウィジェットを多数含めることができます。私が抱えている問題は、各ウィジェットのメモリを削除して解放することです。プログラムのRAM使用量を監視すると、ボタンをクリックしてこれらの新しいウィジェットの1つを開くたびにRAMが増加し、ウィジェットを閉じるとRAMが解放されないようです. および他のソリューションを使用してみましdeleteLaterたが、プログラムでクラッシュが発生し続けます。
サンプルコードは次のとおりです。
QPointer<ListReservations> listResWindow = new ListReservations(resID);
listResWindow->setNum(numpeople);
listResWindow->show();
これは(非モーダル)ListReservationsとして宣言された " " ウィジェットを呼び出します。QDialogそのダイアログには、QWidget::close()スロットを呼び出すウィンドウを閉じるボタンがあります。
QPointer問題は、ダイアログが閉じられたときに私のメインプログラム( .
QConnect()オブジェクトに aを実行できると思いましたQPointerが、ポインターの受け渡しを許可する信号またはスロットが見つからないようです。ダイアログが実際に閉じられて削除の準備ができたら、信号を送信することはほとんどありません。
QDialogたぶん、メインプログラムで、汎用ポインターオブジェクトを受け取り、それを呼び出す前に独自のクローズスロットを呼び出す何らかの関数が必要ですか? その機能では、それ自体が破壊されることになりますか? 実装しようとして失敗したアイデアを捨てるだけです....
ListReservations理論的には同時に複数のウィンドウを開くことができるため、同じポインターを他の場所で再利用できるとは思いません。