2013-09-26 21 views
0

这是用于TCP客户端 - 服务器通信的C++中的基本QtCreator代码的一部分。 这应该是我需要工作的最后一个功能。但要理解这是如何工作的以及错误在哪里,我试图展示一大堆QMessageBox。并非同一功能中的所有QMessageBox实际上都显示为

当我运行它,我得到第一个说“成功”。但我没有得到最后三个(因为如果 - 否则,我希望至少有一个出现)。所以我在'if'语句中加入了更多QMSGBoxes,以return结尾,以查看问题出在哪里,但即使它们没有出现。

任何想法,为什么这是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

sscce.org - >您能否提供一个独立的示例,其中包含一个我们可以构建和测试的主函数? – lpapp

+3

这个问题似乎是无关紧要的,因为它涉及到一个与代码无关的构建问题,并且提问者无论如何都不清楚自己的问题。 –

回答

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; 
} 
+0

我认为我的代码被链接到的其他文件有问题,因为最终我有类似于我在这里发布的内容,并且它工作得很好......:S – DDauS

相关问题