QDialog show()后面跟着返回结果操作

QDialog show() follow with return result actions

本文关键字:返回 结果 操作 show QDialog      更新时间:2023-10-16

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

//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后续操作,但.show()无法执行,我尝试了.exec(),但会与(QApplication) a.exec()等代码冲突,导致未终止的进程问题。

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

如果你想用阻塞的方式显示对话框并访问结果,你可以使用exec()并在它返回时看到结果:

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