2013-05-02 1 views
0

Je suis en difficulté. J'ai un QDialog comme un formulaire de connexion. Lorsque je me connecte, le formulaire se ferme et ma fenêtre principale apparaît. Mon login est correct mais quand il se ferme il renvoie QDialog :: Rejected.Qt Quand la boîte de dialogue retourne-t-elle QDialog :: Rejected

Que puis-je faire pour empêcher le retour de QDialog :: Rejected? Et quand va-t-il encore renvoyer QDialog :: Rejected?

code lorsque je me connecte:

void Login::on_cmdLogin_clicked() 
{ 

    if(ui->txtUsernameLogin->text().isEmpty() || ui->txtPassLogin->text().isEmpty()) 
    { 
      QMessageBox::critical(this, "Vocabulary Trainer", "Please fill in both textboxes.", QMessageBox::Ok); 
      return; 
    } 
    User user(filepath + "/users.txt"); 
    if (user.checkPassword(ui->txtUsernameLogin->text(), ui->txtPassLogin->text())) 
    { 
     username = ui->txtUsernameLogin->text(); 
     close(); 
    } 
    else 
     QMessageBox::warning(this, "Vocabulary Trainer", "Sorry, your password is incorrect.\nPlease type in the correct password.", QMessageBox::Ok); 
} 

main():

MainWindow w; //Real Window 
Login lg(0); //Login Window 

lg.set_path(workspace_path); 
lg.setModal(true); 
if(lg.exec() == QDialog::Rejected) 
    QMessageBox::critical(0, "rr", "", QMessageBox::Ok); 
else 
    w.show(); //Shows the real window 

Il sera toujours rejeté.

Répondre

2

Essayez d'appeler à la place done(QDialog::Accepted);close(); dans Login::on_cmdLogin_clicked()

+0

A travaillé. Mais pourquoi dois-je utiliser cela au lieu de fermer? –

+0

Fermez la valeur de retour de exec à 0. Mais QDialog :: Accepted == 1, QDialog :: Rejected == 0. Vous devez définir la valeur de retour à 1 –

+0

Oh, merci. Ne sait pas close définit la valeur de retour à 0. –

Questions connexes