Qt:QString中文件的路径

Qt: Path to file in QString

本文关键字:路径 文件 中文 QString Qt      更新时间:2023-10-16

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

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中的第一个符号是有原因的吗?我应该如何在与代码相同的文件夹中写入文件的路径?

提前感谢!

您使用的资源路径样式意味着文件frog.bmp位于资源文件中。因此,要么需要在运行时解析bmp文件的路径,要么需要向项目中添加资源文件。

如果你使用UI设计器,资源文件的概念是自动处理的,但如果你想通过代码访问资源,你需要做一些事情

首先创建一个资源文件。在visual Studio(带有visual Studio插件)中,有一个向导可以执行此操作。本质上,它只是一个扩展名为.qrc的xml文件,看起来像这样:

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

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

如果你使用的是visual Studio,并且有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.

这里有几个链接可以更详细地解释事情:

在Qt Creator 中创建资源文件

解释资源文件如何工作