문제

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();
}

체크 아웃 http://qt-project.org/doc/qt-4.8/qdialog.html

다른 팁

다른 방법은 마감 이벤트에서 대기하는 루프를 사용하는 것입니다.

#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?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top