2009-05-02 62 views
10

我正在使用C++和QT开发一个项目,我想打开一个新的QWidget窗口,让用户与它交互等,然后让执行返回到打开窗口的方法。示例(MyClass的继承QWidiget):等到QWidget关闭

void doStuff(){ 

    MyClass newWindow = new Myclass(); 
    /* 
     I don't want the code down here to 
     execute until newWindow has been closed 
     */ 
} 

我觉得是有最有可能是非常简单的方法来做到这一点,但由于某种原因,我不能弄明白。我怎样才能做到这一点?

回答

0

为什么不把你不希望被执行的代码放到窗口关闭的独立函数中,并将其作为SLOT作为窗口的关闭SIGNAL

+0

谢谢,这听起来像一个好主意。我将如何做到这一点?我从来没有硬编码信号/插槽,只能通过QTDesigner使用它们。 – Jarek 2009-05-02 19:39:39

+0

您将不得不修改源代码文件。 – dirkgently 2009-05-02 19:42:54

10

的另一种方法是使用一个循环等待对关闭事件:

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