QDialog :: accept退出主应用程序

时间:2011-06-11 15:42:42

标签: qt dialog qdialog

我有一个ClientSocket类,在特定的会话状态中是TcpSocket我需要让用户输入通讯密码。所以我创建了一个Dialog 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 广告位中,我通过套接字发送消息 challange (文本)并存储密码。

<小时/> 我希望Dialog能够隐藏在那里并继续正常的套接字会话。在接受或拒绝Dialog之后,主应用程序退出(退出它不会崩溃)。为什么?

  • 我的应用程序没有其他小部件。我就像QCoreApplication一样工作。但我仍然使用QApplication,因为我有一些GUI需要。

1 个答案:

答案 0 :(得分:1)

这是目前唯一显示的窗口吗?如果是这样,我猜您的QApplication实例设置为quit when the last window is closed。这是默认的。

如果是这种情况,您应该在显示任何窗口之前将其明确设置为false。