Qt:QString中的文件路径

时间:2013-07-30 23:16:57

标签: c++ qt path qstring

我在QString中存储Windows中的文件路径时遇到问题。我正在使用Qt和C ++。

QString resourcePath = ":/images/frog.bmp";
if( ! QFile::exists(resourcePath) )
{
    qDebug("*** Error - Resource path not found : %s",   resourcePath.data());
}

此代码的结果如下:

*** Error - Resource path not found : :

所以我可以看到resourcePath.data())只包含“:”。我认为问题是斜杠,所以我尝试用“\”更改“/”,但结果是一样的。

但如果我写:

QString resourcePath = "C:\\Users\\Boris\\Desktop\\Frogger3\\images\\frog.bmp";

一切正常。我错过了什么?有没有理由说结肠不能成为QString的第一个标志?我应该如何在与代码相同的文件夹中写入文件的路径?

提前致谢!

1 个答案:

答案 0 :(得分:2)

您使用的资源路径样式暗示文件frog.bmp位于资源文件中。因此,您需要在运行时解析bmp文件的路径,或者需要将资源文件添加到项目中。

如果您使用UI设计器,则会自动处理资源文件的概念,但如果您想通过代码访问资源,则需要执行一些操作。

首先创建一个资源文件。在视觉工作室(使用视觉工作室插件)中,有一个向导可以执行此操作。本质上它只是一个扩展名为.qrc的xml文件,如下所示:

<RCC>
    <qresource prefix="/images">
        <file>frogger.bmp</file>
    </qresource>
</RCC>

现在必须在构建期间处理此文件。如果您使用过.ui文件,则类似。有一个名为“rcc.exe”的工具,它将qrc文件作为输入并生成一个需要编译并与项目链接的.cpp文件。

如果您正在使用可视工作室并拥有Qt Visual Studios插件,那么当您将qrc文件添加到项目时,这一切都应该为您处理。

如果你正在使用QMake,那么你的pri文件应该包含一个“RESOURCES”部分,你需要列出你的qrc文件:

RESOURCES += yourqrcfile.qrc

现在,一旦完成。您可以在代码中访问您的资源。您对QFile :: exists的调用应解析文件名。

如果您将资源放在静态库或共享库中,则需要在类中添加以下行以确保加载资源文件。

Q_INIT_RESOURCE(yourqrcfile);  // do not include the extension, just the name of the file.

以下是一些更详细解释事情的链接:

Creating a resource file in Qt Creator

Explaining how resource files work