バックストーリー:
コードの一部をレビューしてもらいQMessageBox
、エラーを表示するためのローカルを作成し、それをヒープに割り当てました。
if (getAutopilotList.error() == 0) {
QMessageBox* error = new QMessageBox(0);
error->setDetailedText(getAutopilotList.errorString());
error->setText("something");
error->setWindowTitle(tr("Error!"));
error->show();
return;
}
開発者は次のように述べています。
このポインターはリークします。親を設定せず、決して削除しません。ここでもポインタは必要ありません。親は 0 を使用せず、Core::ICore::mainWindow() を使用します。
次のように考えたので、私は混乱しました。
- QWidgets はヒープでのみ機能しました
delete error;
メッセージボックスが閉じられたときにポインターが自動的に表示されること。
QMessageBox をスタックに置いてみましたが、表示されませんでした。
質問:
- この QMessageBox をスタックに置いて動作させることはできますか?
delete
QMessageBox ポインターを明示的に指定する必要がありますか?- この場合、親を 0 を超える値に設定することが重要なのはなぜですか?