我有一个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 (文本)并存储密码。
答案 0 :(得分:1)
这是目前唯一显示的窗口吗?如果是这样,我猜您的QApplication实例设置为quit when the last window is closed。这是默认的。
如果是这种情况,您应该在显示任何窗口之前将其明确设置为false。