QDialog :: Aceptar la aplicación principal de renuncia
Pregunta
tengo un ClientSocket
Clase que es un TcpSocket
En un cierto estado de conversación, necesito pedirle al usuario que ingrese una contraseña de comunicación. Entonces he creado un diálogo DG::ChallangeDialog
. en DG::ChallangeDialog
S CTOR TI
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
nuevamente emite una señal challanged(QString)
void ChallangeDialog::acceptedSlot(){
QString text = ui->passBox->text();
emit challanged(text);
}
en ClientSocket
hago
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;
En ClientSocket::challange
ranura Envío un mensaje desafío (texto) sobre el socket y almacene la contraseña.
Y espero que el diálogo se esconda allí y la conversación normal del socket continúe. y después de que se acepta o rechaze el diálogo, la aplicación principal deja deja (se deja de choque). Por qué ?
- Mi aplicación no tiene otros widgets. Simplemente funciona como un QcorePplication. Pero aún he usado Qapplication porque tengo algunas necesidades de GUI.
Solución
¿Es esta la única ventana que se muestra en este momento? Si es así, supongo que tu Aplicaciones La instancia está establecida en renunciar cuando se cierre la última ventana. Es cierto por defecto.
Si este es el caso, debe establecer esto explícitamente en falso antes de mostrar cualquier ventana.