Qdialog :: Принять откидывание основного приложения
Вопрос
у меня есть ClientSocket
Класс, который является TcpSocket
В определенном состоянии разговора мне нужно попросить пользователя ввести пароль связи. Итак, я создал диалог DG::ChallangeDialog
Анкет в DG::ChallangeDialog
S CTOR I I.
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
снова излучает сигнал challanged(QString)
void ChallangeDialog::acceptedSlot(){
QString text = ui->passBox->text();
emit challanged(text);
}
в ClientSocket
Я делаю
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;
В ClientSocket::challange
слот Я отправляю сообщение проклятие (Текст) над гнездами и сохраните пароль.
И я ожидаю, что диалог будет спрятаться там, а обычный разговор сокета продолжится. и после того, как диалог принимается или отклоняется, основное приложение уводит (оно выходит из него, не сбивается). Почему ?
- В моем приложении нет других виджетов. Я просто работает как QcoreApplication. Но все же я использовал QAPPLICATION, потому что у меня есть некоторые потребности в графическом интерфейсе.
Решение
Это единственное окно, которое показано в это время? Если так, я бы предположил, что ты QAPPLICATION экземпляр установлен на бросить, когда последнее окно закрыто. Анкет Это верно по умолчанию.
Если это так, вы должны явно установить это на false, прежде чем показывать какие -либо окна.
Не связан с StackOverflow