Qt:QString中文件的路径
Qt: Path to file in QString
我在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 中创建资源文件
解释资源文件如何工作
- 如何将更多文件夹添加到c++include路径
- 从函数角度看ID到文件路径的内部与外部映射
- 在C++中设置基于操作系统的文件路径
- C++17 文件系统::remove_all 带有通配符路径
- 从 C 中的变量获取文件的路径,C++
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- 修改生成文件以简化框架 #include 路径
- 将Visual Studio Code路径设置为.clang_format文件
- Windows 非 ASCII 文件路径
- 非 ASCII 文件路径窗口
- C++和带有国家符号的文件路径(也许用 UTF8 编码)
- 获取 H5::D ataSet 的hid_t和文件中的路径以使用 H5OCopy
- 在特定 Unicode 路径中创建文件
- 如何让用户在 tinyxml2 中输入 XML 文件的路径
- 如何将COM .tlb文件导入具有相对路径C++文件中?
- C++ 路径文件存在限制为 260 个字符
- QT-在pro中指定DLL路径.文件
- 路径文件存在导致链接器错误 2028/2019
- 选择QTableWidgetItem qt的路径文件
- 如何有一个正确的路径文件读取它到stringstream