QT 5.4,无法从代码访问资源

时间:2015-03-16 09:16:43

标签: c++ qt qresource

我尝试将我的应用的样式图像包含在q资源文件中。 当我直接在代码中包含文件时,它可以工作,但是当我尝试使用QResource时,它会失败(不加载文件)。

我在主目录中有资源文件:

AppFolder
  |- main.cpp
  |- darkstyle.qrc
  |- darkstyle
       |- WindowTitleBar.png

以下示例打印: failed1 failed2

#include <QApplication>
#include <QResource>
#include <Qfile>
#include <QDebug>


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

    bool ok= QResource::registerResource("darkstyle.qrc");
    if (!ok) qDebug()<<"failed1";

    QFile file(":/darkstyle/WindowTitleBar.png");
    //QFile file("../AppFolder/darkstyle/WindowTitleBar.png"); //that work

    if(!file.open(QFile::ReadOnly | QFile::Text)) qDebug()<<"failed2";
    else file.close();

    //return a.exec();
    return 0;
}

注意:默认情况下,Qt创建者在顶级文件夹中创建二进制文件(.exe):../ build -AppFolder_Qt_5_4_1_MSVC2013_64bit -Debug / debug / AppFolder.exe 执行根路径似乎是:../ build-AppFolder_Qt_5_4_1_MSVC2013_64bit-Debug

我尝试了大多数可能的执行路径组合。

注2:有些例子使用.rcc文件格式,我没有这些格式,但这可能是一个线索。

要点: 如何从QT应用程序内部访问QResource文件?

编辑1:qrc文件的内容:

<RCC>
    <qresource prefix="/">
        <file>darkstyle/WindowTitleBar.png</file>
        <file>darkstyle/WindowTitleButton.png</file>
        <file>darkstyle/WindowTitleButton1.png</file>
        <file>darkstyle/WindowTitleButton2.png</file>
        <file>darkstyle/WindowTitleButton3.png</file>
    </qresource>
</RCC>

2 个答案:

答案 0 :(得分:2)

QResource :: registerResource(“darkstyle.qrc”)注册资源描述。如果要像这样动态使用资源,则需要自己注册已编译的资源。运行rcc -binary darkstyle.qrc -o darkstyle.rcc并使用QResource :: registerResource(“darkstyle.rcc”)

或者,直接将资源编译到二进制文件中。这样做,在.qrc中使用RESOURCES + = darkstyle.qrc,并省略QResource :: registerResource。

答案 1 :(得分:0)

问题与给定版本的QT与MSVS2013不兼容有关。 通过下载另一个版本的QT或visual studio解决了这个问题。