如何在qt中只显示一个窗口?

时间:2017-04-11 09:46:28

标签: qt

我有两个MainWindows,WindowModality等于Window,我希望第一个窗口在第一个窗口关闭(并且有效)后显示。

问题:当我使用这段代码时,我同时有两个窗口

int main(int argc, char *argv[])
{
    LoginWindow loginWin;
    loginWin.show();

    MainWindow w;
    w.show();

    return a.exec();
}

1 个答案:

答案 0 :(得分:3)

您可以向signal添加一些LoginWindow,并在用户关闭它及其有效时将其发出:

class LoginWindow: public QMainWindow
{
.......
signals:
    void loginReady();
.....
};

然后在你的main函数中你可以像这样做:

int main(int argc, char *argv[])
{
    ....
    LoginWindow loginWin;
    connect(&loginWin, &LoginWindow::loginReady, [](){
             MainWindow* w = new MainWindow();
             w->show();
    });
    loginWin.show();

    return a.exec();
}

当您致电loginReady时,将会执行连接到emit loginReady()信号的lambda。

当然,您应该将CONFIG += c++11添加到.pro文件中。