当前位置:  开发笔记 > 编程语言 > 正文

"QIODevice设备未打开"仅在发布时构建

如何解决《"QIODevice设备未打开"仅在发布时构建》经验,为你挑选了1个好方法。

我正在使用QNetworkAccessManager来传输文件.在Debug中构建程序时,我的程序运行没有任何问题.但是在Release中构建问题有一个奇怪的问题:QIODevice :: read(QFile,"我的文件路径"):设备未打开

我的代码有什么问题?谢谢你的帮助!

QHttpMultiPart* getPacket(QString imgPath)
{
    QHttpMultiPart *pMultiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);

    QFile *imgFile = new QFile(imgPath);
    imgFile->setParent(pMultiPart);
    Q_ASSERT(imgFile->open(QIODevice::ReadWrite));

    QHttpPart imagePart;
    imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
    imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"img\"; filename=\"target.jpg\""));
    imagePart.setBodyDevice(imgFile);
    pMultiPart->append(imagePart);

    return pMultiPart;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    JTest testObj;
    QNetworkAccessManager manager;

    QHttpMultiPart *pHMP = getPacket("F:/Temp/1.jpg");
    QNetworkReply *pNR = manager.put(QNetworkRequest(QUrl("http://192.168.11.102:8080/Test")), pHMP);
    QObject::connect( pNR, SIGNAL(finished()), &testObj, SLOT(handleTransmissionFinished()) );

    return a.exec();
}

小智.. 5

Q_ASSERT()可用于在开发期间测试前后条件.如果在编译期间定义了QT_NO_DEBUG,它什么都不做.

Q_ASSERT不会在Release中进行评估,因此不会打开您的文件.



1> 小智..:

Q_ASSERT()可用于在开发期间测试前后条件.如果在编译期间定义了QT_NO_DEBUG,它什么都不做.

Q_ASSERT不会在Release中进行评估,因此不会打开您的文件.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有