私たちの先生の一人は、メインウィンドウ(QMainWindow)のUIファイルなしでQtアプリケーションを作成するよう依頼しました。通常は常に1つ作成し、空のままにしてuicを処理します。Qt5 QMainWindowコンポーネントの削除
ウィジェット(子)とその親の間に親の関係が定義されている場合、そのウィジェットを削除する必要はありません(親が削除されると削除されます)。したがって、UIが削除されると、すべての子が破棄されます。
UIファイル(生成されていない)を使用しない場合、GUIに追加されたすべてのウィジェットを手動で削除する必要がありますか?
少しサンプル:
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent){
layout = new QHBoxLayout(this);
aButton = new QButton(this);
layout->addWidget(aButton);
...
}
MainWindow::~MainWindow(){
delete ui; // No need to delete more if parental relation.
// However, what do we do if no ui has been generated?
// Do we have to delete aButton?
}
親の値は、アプリケーションのメインエントリは0です。
おかげ
実際にあなたが求めているものは不明ですが、 'ui'は' nullptr'です。 'delete ui;'はNOPです。だからそれはうまくいくようです。 –
さて、自動生成されたuiファイルがないと、私たちがしなければならないことについて尋ねていました。各ウィジェットを手動で削除する必要がありますか? – Papipone
***各ウィジェットを手動で削除する必要がありますか?***いいえ。ウィジェットは親ウィジェットの子である必要があります。 QObjectは、親が削除されたときにそれらを処理します。 – drescherjm