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::ChallangeDialogS 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.
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top