这是 C++ 中用于 TCP 客户端-服务器通信的基本 QtCreator 代码的一部分。这应该是我需要开始工作的最后一个功能。但是为了理解它是如何工作的以及错误在哪里,我试图展示一大堆 QMessageBoxes。
当我运行它时,我得到的第一个是“成功”。但我没有得到最后三个中的任何一个(因为 if-else,我希望至少有一个会出现)。所以我在以 return 结尾的“if”语句中放了几个 QMSGBoxes,看看这是否是问题所在,但即使它们也没有出现。
知道为什么会这样吗?提前致谢。
void DialogLogIn::success()
{
QMessageBox myBox;
myBox.setInformativeText("Sucess.");
myBox.setStandardButtons(QMessageBox::Ok);
myBox.exec();
//return;
qint16 blockSize = 0;
QDataStream in(mysocket);
in.setVersion(13);
if (blockSize == 0) {
if (mysocket->bytesAvailable() < (int)sizeof(quint16))
{
QMessageBox box;
box.setInformativeText("return 1.");
box.setStandardButtons(QMessageBox::Ok);
box.exec();
return;
}
in >> blockSize;
}
if (mysocket->bytesAvailable() < blockSize)
{
QMessageBox box;
box.setInformativeText("return 2");
box.setStandardButtons(QMessageBox::Ok);
box.exec();
return;
}
QString result;
in >> result;
if ( result == "G" )
{
QMessageBox box;
box.setInformativeText("Password Verified.");
box.setStandardButtons(QMessageBox::Ok);
box.exec();
}
else if (result == "N")
{
QMessageBox box;
box.setInformativeText("Password Incorrect.");
box.setStandardButtons(QMessageBox::Ok);
box.exec();
}
else
{
QMessageBox box;
box.setInformativeText("Error.");
box.setStandardButtons(QMessageBox::Ok);
box.exec();
}
}