使用带有 QT5.4 和 mvs2013 x64 的 Qpixmap 未显示图像

Image not shown using Qpixmap with QT5.4 and mvs2013 x64

我正在使用 QT(版本 5.4 msvc2013_64)当然还有 vs2013。编译是成功的,但是当 运行 并不是所有的东西都能正常工作。在使用 vs2010 和 QT(我认为版本 5.1 msvc_2010_opengl 记不太清了)之前,一切正常,但现在一切都变了,这可能是新版本开始时的典型问题,但需要解决。我还遇到了其他问题,但让我们先解决这个问题,因为也许其他问题也会得到解决,否则我会 post 另一个问题来解决其他问题。当然,如果我没有看到当前 QT 和 vs 的解决方案,我将切换到 vs2012(需要下载和安装);也许那时一切都会像以前一样工作。提前致谢。

ui_ta7feezquran.h

/********************************************************************************
    ** Form generated from reading UI file 'ta7feezquran.ui'
    **
    ** Created by: Qt User Interface Compiler version 5.4.1
    **
    ** WARNING! All changes made in this file will be lost when recompiling UI file!
    ********************************************************************************/

#ifndef UI_TA7FEEZQURAN_H
#define UI_TA7FEEZQURAN_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Ta7feezQuranClass
{
public:
    QWidget *centralWidget;
    QLabel *a;
    QMenuBar *menuBar;
    QToolBar *mainToolBar;

    void setupUi(QMainWindow *Ta7feezQuranClass)
    {
        if (Ta7feezQuranClass->objectName().isEmpty())
            Ta7feezQuranClass->setObjectName(QStringLiteral("Ta7feezQuranClass"));
        Ta7feezQuranClass->resize(572, 485);
        centralWidget = new QWidget(Ta7feezQuranClass);
        centralWidget->setObjectName(QStringLiteral("centralWidget"));
        a = new QLabel(centralWidget);
        a->setObjectName(QStringLiteral("a"));
        a->setGeometry(QRect(-30, -20, 601, 471));
        a->setPixmap(QPixmap(QString::fromUtf8(":/Ta7feezQuran/Resources/Amasjed Alharam.jpg")));
        a->setScaledContents(true);
        Ta7feezQuranClass->setCentralWidget(centralWidget);
        menuBar = new QMenuBar(Ta7feezQuranClass);
        menuBar->setObjectName(QStringLiteral("menuBar"));
        menuBar->setGeometry(QRect(0, 0, 572, 21));
        menuBar->setLayoutDirection(Qt::RightToLeft);
        Ta7feezQuranClass->setMenuBar(menuBar);
        mainToolBar = new QToolBar(Ta7feezQuranClass);
        mainToolBar->setObjectName(QStringLiteral("mainToolBar"));
        Ta7feezQuranClass->addToolBar(Qt::TopToolBarArea, mainToolBar);

        retranslateUi(Ta7feezQuranClass);

        QMetaObject::connectSlotsByName(Ta7feezQuranClass);
    } // setupUi

    void retranslateUi(QMainWindow *Ta7feezQuranClass)
    {
        Ta7feezQuranClass->setWindowTitle(QApplication::translate("Ta7feezQuranClass", "Ta7feezQuran", 0));
        a->setText(QString());
    } // retranslateUi

};

namespace Ui {
    class Ta7feezQuranClass: public Ui_Ta7feezQuranClass {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_TA7FEEZQURAN_H

ta7feezquran.h

#ifndef TA7FEEZQURAN_H
#define TA7FEEZQURAN_H

#include <QtWidgets/QMainWindow>
#include "ui_ta7feezquran.h"

class Ta7feezQuran : public QMainWindow
{
    Q_OBJECT

public:
    Ta7feezQuran(QWidget *parent = 0);
    ~Ta7feezQuran();

private:
    Ui::Ta7feezQuranClass ui;
};

#endif // TA7FEEZQURAN_H

ta7feezquran.cpp

#include "ta7feezquran.h"

Ta7feezQuran::Ta7feezQuran(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
}

Ta7feezQuran::~Ta7feezQuran()
{

}

main.cpp

#include "ta7feezquran.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Ta7feezQuran w;
    w.show();
    return a.exec();
}

ta7feezquran.qrc

<RCC>
    <qresource prefix="/Ta7feezQuran">
        <file>Resources/Amasjed Alharam.jpg</file>
    </qresource>
</RCC>

使用的某些应用程序功能,例如图像、多媒体、打印支持等,需要使用 qt 插件。

通过复制插件文件夹(包含 dll)并将它们粘贴到可执行文件夹中,应将所需的插件复制到可执行文件夹(包含 .exe 文件的文件夹)。其他一切都应该按预期工作。

在这种情况下,需要复制 imageformats 文件夹(包含 qjpeg.dll,因为使用的文件是 jpg)。