QDialog :: accept quittes Application principale
Question
J'ai un ClientSocket
classe qui est un TcpSocket
dans un certain état de la conversation que je dois demander à l'utilisateur d'entrer un mot de passe de communication. J'ai donc créé un DG::ChallangeDialog
dialogue. dans DG::ChallangeDialog
s Ctor J'ai
ui->setupUi(this);
QPushButton* okButton = ui->buttonBox->button(QDialogButtonBox::Ok);
if(okButton != 0x0){
okButton->setText("Challange");
}
QObject::connect(this, SIGNAL(accepted()), this, SLOT(acceptedSlot()));
acceptedSlot
émet à nouveau un signal challanged(QString)
void ChallangeDialog::acceptedSlot(){
QString text = ui->passBox->text();
emit challanged(text);
}
ClientSocket
je fais
case Hallo:{
if(m->message().startsWith("welcome")){
DG::ChallangeDialog* dlg = new DG::ChallangeDialog;
dlg->setModal(true);
connect(dlg, SIGNAL(challanged(QString)), this, SLOT(challanged(QString)));
dlg->exec();
/*
DG::MessagePacket* res = new DG::MessagePacket((int)Hallo);
res->setMessage("challange");
send(res);
state = Challange;
*/
}
}break;
Dans ClientSocket::challange
emplacement J'envoie un message Challange (texte) sur la prise et stocker le mot de passe.
et je pense la boîte de dialogue pour cacher là et la conversation prise normale de continuer. et après la boîte de dialogue est accepté ou rejeté l'application principale quittes (Il quitte ne tombe pas en panne). Pourquoi?
- Mon application n'a pas d'autres Widgets. Je travaille comme un QCoreApplication. Mais je l'ai utilisé QApplication parce que j'ai des besoins de l'interface graphique.
La solution
Est-ce la seule fenêtre qui apparaît à ce moment? Si oui, je suppose que votre QApplication instance est réglé sur quitter quand la dernière fenêtre est fermée . Il est vrai par défaut.
Si tel est le cas, vous devez définir explicitement à false avant d'afficher toutes les fenêtres.