私はQt5.7でC++でコーディングしています。私はQDialog exec()の問題に直面しています。私はモーダルでそれが必要なので、私はshow()を使うことはできません。ダイアログが終了して閉じられると、UIは消えますが、ダイアログ変数と関数はまだ実行されています。ダイアログには、ダイアログを閉じた後に送信を続けるシリアルポートにバイトを送信するタイマー機能があります。これとは逆に、show()を代わりに使用すると、これは起こりません。助けてください。Qt exec()を閉じることができません
私は目的のために: QuitOnCloseとDeleteOnCloseのようなテストのために冗長なコマンドを使用します。しかし、意図した通りに動作するものはありません。ダイアログがメインウィンドウ
ダイアログでwizard = new Wizard();
wizard->setAttribute(Qt::WA_QuitOnClose);
wizard->setAttribute(Qt::WA_DeleteOnClose, true);
connect(wizard, SIGNAL(closeWizardForm()), this, SLOT(closeWizardForm()));
wizard->exec();
また、
void MainWindow::closeWizardForm()
wizard->destroyed();
wizard = NULL;
に作成され
、それは
void Wizard::closeEvent(QCloseEvent *event)
// "x" button clicked
if (changeMade == true){
// give warning if changes not saved
QMessageBox::StandardButton resBtn = QMessageBox::critical(this, "Setup Wizard", tr("Unsaved data will be lost. \r\n"
" Are you sure you want to quit?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
if (resBtn != QMessageBox::Yes){
event->ignore();
return;
}
}
// continue to quit
emit closeWizardForm();
event->accept();
this->close();
}
のためにありがとうございましたことにより、閉じあなたの親切な出席者。
SP。
'wizard'はクラスメンバ変数ですか? – vahancho
ダイアログのモダリティは 'show()'を使っているかどうかは関係ありません。あなたは 'show()'を使用し、ダイアログをモーダルに設定する必要があります。シンプル。 –