在Qt中获取qrc文件的路径

4

我希望知道如何访问qrc文件中文件路径,以便将它们用作数组中的字符串。 一个qrc文件的例子如下:

   <!DOCTYPE RCC><RCC version="1.0">
    <qresource prefix="">
     <file>images/1.jpg</file>
     <file>images/2.jpg</file>
     <file>images/3.jpg</file>
     <file>images/4.jpg</file>
    </qresource>
   </RCC>

我希望以以下方式使用它:
   for(int i=0;i<4;i++)
   {
     path=image_path[i];
   }

其中path是一个QList,可以用于后续访问相应的图像。


这个问题解决了吗? - László Papp
1个回答

1

使用QDirIterator似乎有一种简单的方法来完成它。

如果您在当前工作目录中有一个名为“:”的目录,并且您希望将其解析,那么该方法可能会出现问题。无论如何,现在不应该担心这个问题。

QStringList imageFileList;
QDirIterator dirIterator(":", QDirIterator::Subdirectories);
while (dirIterator.hasNext()) {
    QFileInfo fileInfo = it.fileInfo();
    if (fileInfo.isFile()) // Do not add directories to the list
        imageFileList.append(it.next());
}

另外,这需要相当多的参与,但我认为它是有效的。恐怕在撰写本文时没有更方便的方法。

main.qrc

<!DOCTYPE RCC><RCC version="1.0">
 <qresource prefix="">
  <file>images/1.jpg</file>
  <file>images/2.jpg</file>
  <file>images/3.jpg</file>
  <file>images/4.jpg</file>
 </qresource>
</RCC>

main.cpp

#include <QXmlStreamReader>
#include <QString>
#include <QFile>
#include <QTextStream>

int main()
{
    QTextStream standardOutput(stdout);
    QFile file("main.qrc");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        standardOutput << "File open error:" << file.errorString() << "\n";
        return 1;
    }
    QXmlStreamReader inputStream(&file);
    while (!inputStream.atEnd() && !inputStream.hasError()) {
        inputStream.readNext();
        if (inputStream.isStartElement()) {
            QString name = inputStream.name().toString();
            if (name == "file")
                standardOutput << "file: :/" << inputStream.readElementText() << "\n";
        }
    }
    return 0;
}

main.pro

TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp

构建和运行

qmake && make && ./main

输出

file: :/images/1.jpg
file: :/images/2.jpg
file: :/images/3.jpg
file: :/images/4.jpg

@user2828747:在迭代过程中将inputStream.readElementText()的值附加到该数组中? - László Papp
我有一些图片在qrc文件中。我想在应用程序运行时按照列表模式显示这些图片。这种方法正确吗? - Kamalpreet Grewal
@user2828747:是的,我还添加了一种替代方法。 - László Papp
如何创建一个变量来存储qrc文件中项目的数量? - Kamalpreet Grewal
@user2828747:我的代码已经显示了。在这种情况下,你可以使用 imageFileList.size() - László Papp
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接