我使用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并在关闭后执行以下代码?非常感谢!
答案 0 :(得分:1)
如果您希望使用阻止方式显示对话框并访问结果,可以使用exec()
并在返回时查看结果:
login = new Login();
if(login->exec())
{
bool result = login->loginsucessful;
if (result)
{
...
}
else
{
...
}
}