2014-09-15 8 views
1

Я создал логин входа в систему, используя QDialog, который имеет слот bool Login::on_OKbutton_Clicked(), который возвращает статус успешного входа в систему public: bool loginsucessful, и после этого я хочу сделать некоторые оценки на основе этого результата, выглядит код как это:QDialog show() следовать с действиями результата возврата

//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 {...} 

Я хочу if folloeups выполнить после того, как Логин GUI был завершен (OK или кнопку Отмена щелкнул), но .show() не будет делать, я попытался .exec(), но будет конфликтовать с вне кодов, как (QApplication) a.exec() вызывая неразрешенные проблемы процесса.

Я только начинаю программировать с Qt, так что есть хорошее решение, которое ждет GUI и excute следующие коды после его закрытия? Большое спасибо!

+0

Вы пробовали 'login-> Exec()'? – nib

ответ

1

Если вы хотите иметь блокирующий способ показать диалог и получить доступ к результатам, которые можно использовать exec() и увидеть результаты, когда он возвращается:

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

спасибо, я новичок, и я думаю, что этот вопрос должен быть глупым. Как выйти из цикла после 'login-> exec()'? Я использовал 'app.exec' в main.cpp, который включает в себя цикл' login-> exec() внутри, приложение can not, похоже, завершается, когда я нажимаю кнопку – xlarry

+0

'exec()' показывает диалог как модальный диалог и блокирует до тех пор, пока пользователь не закроет его. Поэтому, когда диалог закрыт каким-либо образом, цикл завершается. – Nejat

Смежные вопросы