特定の会話状態にあるClientSocket
クラスがありTcpSocket
、ユーザーに通信パスワードの入力を求める必要があります。だから私は Dialog を作成しましたDG::ChallangeDialog
。DG::ChallangeDialog
私は
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
スロットでは、ソケットを介してMessage challange (テキスト) を送信し、パスワードを保存します。
ダイアログがそこに隠れて、通常のソケットの会話が続くことを期待しています。ダイアログが承認または拒否された後、メイン アプリケーションは終了します (終了してもクラッシュしません)。なんで ?
- 私のアプリケーションにはその他のウィジェットがありません。私は QCoreApplication のように動作します。しかし、まだGUIが必要なため、QApplicationを使用しています。