문제
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();
}
창이 별도의 함수로 닫히고이를 SLOT
창문이 가까워지기 위해 SIGNAL
?
제휴하지 않습니다 StackOverflow