У меня есть класс ClientSocket
, который является TcpSocket
в определенном состоянии разговора. Мне нужно попросить пользователя ввести пароль для связи. Итак, я создал диалог DG::ChallangeDialog
. в DG::ChallangeDialog
s ctor У меня
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, потому что у меня есть некоторые потребности в графическом интерфейсе.