今のところ、私はできる:
void MainWindow::on_actionPATH_triggered() {
std::unique_ptr<QDialog> win(new QDialog());
win->exec();
}
メインウィンドウをブロックしないように別のスレッドで使用async
/実行する必要がありますか、またはそこにあるオブジェクトを閉じて削除/解放するためにサブスクライブする方法はありますか?
あなたはちょうど使用することができますshow()
void MainWindow::on_actionPATH_triggered() {
QDialog* win = new QDialog();
//needed connect
win->setAttribute(Qt::WA_DeleteOnClose);//we don't want memory leak
win->show();
}
と使用
win->setModal(false);//but it is default option, you don't need to change it
ドキュメントから:
デフォルトでは、このプロパティは false で、show() はダイアログをモードレスとしてポップアップします。彼のプロパティを true に設定することは、QWidget::windowModality を Qt::ApplicationModal に設定することと同じです。exec() はこのプロパティの値を無視し、常にダイアログをモーダルとしてポップアップします。
Qt::WA_DeleteOnClose
ユーザーがダイアログを閉じると、ダイアログが削除されます。
親をダイアログに設定することもできます。
QDialog* win = new QDialog(this);
この場合win
、mainWindow で削除されます。
そして、ここで別のスレッドは必要ありません。