質問
C ++とQTでプロジェクトに取り組んでいます。新しいQWidgetウィンドウを開き、ユーザーに操作してもらい、その後、ウィンドウを開いたメソッドに実行を戻します。例(MyClassはQWidigetを継承します):
void doStuff(){
MyClass newWindow = new Myclass();
/*
I don't want the code down here to
execute until newWindow has been closed
*/
}
これを行うには非常に簡単な方法があると思いますが、何らかの理由でそれを理解できません。どうすればいいですか?
解決
MyClass
は QDialog
を継承します。次に、 exec()
を使用してモーダルダイアログとして開きます。
void MainWindow::createMyDialog()
{
MyClass dialog(this);
dialog.exec();
}
他のヒント
別の方法は、終了イベントを待つループを使用することです:
#include <QEventLoop>
void doStuff()
{
// Creating an instance of myClass
MyClass myInstance;
// (optional) myInstance.setAttribute(Qt::WA_DeleteOnClose);
myInstance.show();
// This loop will wait for the window is destroyed
QEventLoop loop;
connect(this, SIGNAL(destroyed()), & loop, SLOT(quit()));
loop.exec();
}
別の関数でウィンドウが閉じるまで実行したくないコードを入れないで、これをウィンドウのクローズ SIGNAL
の SLOT
として接続する
所属していません StackOverflow