这是用于TCP客户端 - 服务器通信的C ++中基本QtCreator代码的一部分。 这应该是我需要工作的最后一个功能。但要了解这是如何工作的以及错误的位置,我试图展示一大堆QMessageBoxes。
当我运行它时,我得到第一个说“成功”的人。但我没有得到最后三个中的任何一个(因为如果 - 否则,我希望至少有一个出现)。所以我在以if结尾的'if'语句中添加了几个QMSGBox,以查看问题是否存在,但即使它们没有出现。
为什么这是hapening?提前谢谢。
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();
}
}
答案 0 :(得分:0)
下面的内容适用于Qt 4和5,Windows和OS X.我只是把它变成了一个独立的例子。
#include <QApplication>
#include <QMessageBox>
#include <QBuffer>
#include <QScopedPointer>
void success()
{
QScopedPointer<QBuffer> mysocket(new QBuffer);
QMessageBox myBox;
myBox.setInformativeText("Sucess.");
myBox.setStandardButtons(QMessageBox::Ok);
myBox.exec();
mysocket->open(QBuffer::ReadWrite);
mysocket->write(QByteArray(20, 0));
mysocket->seek(0);
qint16 blockSize = 0;
QDataStream in(mysocket.data());
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();
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
success();
return 0;
}