Domanda

Ho un ClientSocket Classe che è un TcpSocket in un certo stato di conversazione ho bisogno di chiedere all'utente di immettere una password di comunicazione. Così ho creato un DG::ChallangeDialog dialogo. in DG::ChallangeDialogs ctor ho

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 emette nuovamente un segnale challanged(QString)

void ChallangeDialog::acceptedSlot(){
    QString text = ui->passBox->text();
    emit challanged(text);
}

in ClientSocket faccio

    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;

In ClientSocket::challange Slot mando un messaggio challange (testo) sulla presa e memorizzare la password.


e mi aspetto che la finestra di dialogo per nascondere lì e la conversazione normale presa per continuare. e dopo la finestra di dialogo viene accettato o respinto le principali si chiude dell'applicazione (Si chiude esso non va in crash). Perché?

  • Il mio applicazione non ha altri widget. Ho appena funziona come un QCoreApplication. Ma ancora ho usato QApplication causa ho alcune esigenze GUI.
È stato utile?

Soluzione

E 'questo l'unica finestra che viene mostrato in questo momento? Se è così, direi che l'istanza QApplication è impostata su smettere quando l'ultima finestra è chiusa . E 'vero per impostazione predefinita.

Se questo è il caso, è necessario impostare in modo esplicito questo su false prima di mostrare tutte le finestre.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top