如何解决QDialog :: accept退出主应用程序
| 我有一个ClientSocket
类别,在某种对话状态下是TcpSocket
,我需要询问用户输入通信密码。所以我创建了一个对话框DG::ChallangeDialog
。在ѭ2的时间内
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)),SLOT(challanged(QString)));
dlg->exec();
/*
DG::MessagePacket* res = new DG::MessagePacket((int)Hallo);
res->setMessage(\"challange\");
send(res);
state = Challange;
*/
}
}break;
在“ 10”插槽中,我通过套接字发送消息挑战(文本)并存储密码。
并且我希望对话框隐藏在那里并且正常的套接字对话将继续。在接受或拒绝对话框后,主应用程序退出(退出该程序不会崩溃)。为什么呢
我的应用程序没有其他小部件。我只是像QCoreApplication一样工作。但是我仍然使用QApplication,因为我有一些GUI需求。
解决方法
这是此时唯一显示的窗口吗?如果是这样,我想您的QApplication实例设置为在关闭最后一个窗口时退出。默认情况下是这样。
如果是这种情况,则应在显示任何窗口之前将其显式设置为false。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。