QDialog show()跟随返回结果动作

时间:2014-09-15 20:03:44

标签: c++ qt

我使用QDialog创建了一个登录GUI,它有一个返回登录成功状态bool Login::on_OKbutton_Clicked()的插槽public: bool loginsucessful,之后我想根据该结果做一些判断,代码看起来像这样:

//Login class
Login::Login(QString Ver, QWidget *parent) :
QDialog(parent),
ui(new Ui::Login)
{
 public:
     bool loginsucessful = 0;
     bool on_OKbutton_Clicked()
         {
              // login data acquisition and verification
              if (verification_passed) { loginsucessful = 1};
         }

//outer codes
Login *login = new Login(ver);
login->show();
//here is the question
if (login.loginsucessful)
    {...}
else {...}

我希望在登录GUI完成后执行if folloeups(单击“确定”或“取消”按钮),但.show()不会执行,我尝试.exec()但会与像(QApplication) a.exec()这样的代码会导致未终止的流程问题。

我刚开始用Qt编程,那么有没有好的解决方案等待GUI并在关闭后执行以下代码?非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您希望使用阻止方式显示对话框并访问结果,可以使用exec()并在返回时查看结果:

login = new Login();
if(login->exec())
{
    bool result = login->loginsucessful;
    if (result)
    {
       ...
    }
    else 
    {
       ...
    }
}