QT5.2资源文件

时间:2014-02-01 20:02:16

标签: c++ qt

短暂但烦人的问题;我无法访问qt资源文件(又名.qrc)中定义的任何内容。我已经按照qt utorial创建了一个名为TextFinder的小部件应用程序。据我所知,我已经创建了所有必需的文件并完成了所有指令但我无法访问qrc内容。  在项目文件夹中,我有以下文件:

TextFinder
  resources
   input.txt
  main.cpp
  textfinder.cpp
  textfinder.h
  TextFinder.pro
  TextFinder.pro.user
  TextFinder.qrc
  textfinder.ui

qrc文件的内容如下:

<RCC>
    <qresource prefix="/res">
        <file>resources/input.txt</file>
    </qresource>
</RCC>

要在我打开文件中打开文件,请在编辑器中右键单击该文件,然后选择将资源路径复制到剪贴板选项。这产生了“:/res/resources/input.txt”。所以我刚进入我的函数打开文件。此功能如下所示:

void TextFinder::loadTextFile()
{
    QFile inputFile(":/res/resources/input.txt");
    inputFile.open(QIODevice::ReadOnly);

    if (inputFile.isOpen())
    {
        QTextStream txtStream(&inputFile);
        QString contents = txtStream.readAll();
        inputFile.close();

        ui->textEdit->setPlainText(contents);
        QTextCursor cursor = ui->textEdit->textCursor();
        cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);
    }
    else
    {
        throw std::runtime_error("Resource file may be wrong?");
    }
}

当我运行应用程序时,抛出runtime_error告诉我它无法打开文件。在项目文件中,我将qrc文件定义如下:

RESOURCES += \
    TextFinder.qrc

这里出了什么问题?任何人都可以指出我做错了什么?

此致  乔

1 个答案:

答案 0 :(得分:1)

根据Qt Resource System文件:

  

还可以使用qresource标记的prefix属性为.qrc文件中的所有文件指定路径前缀:

<qresource prefix="/myresources">
    <file alias="cut-img.png">images/cut.png</file>
</qresource>
     

在这种情况下,文件可以访问:/myresources/cut-img.png。

因此,当存在前缀时,子路径会被切断