Qdialog :: Принять откидывание основного приложения

StackOverflow https://stackoverflow.com/questions/6316846

  •  26-10-2019
  •  | 
  •  

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top