如何将Qt文件路径从资源转换为绝对路径?
How to convert Qt file path from resource to absolute path?
我需要接收绝对文件路径,例如
C:/Users/Dima/YandexDisk/_Application/WeldAnalysis/ExperimentDefaults.xlsx
从QRC文件的路径,如
:/Data/ExperimentDefaults.xlsx
.
我该怎么做?
资源全部打包到 QRC 文件中,它们不暴露给文件系统,因此它们不能转换为标准路径;这就像访问 zip 文件中的文件一样。
你愿意用这样的文件路径做什么?QFile
可以处理资源路径(":/..."
)并打开此类文件,但其他文件处理API则不能(例如C的fopen
或C++的std::ifstream
)。此外,出于同样的原因,如果作为参数传递,非Qt应用程序将无法打开此类文件。
您拥有的选项包括:
-
使用
QFile
打开文件并使用相关的 Qt 类读取它(鉴于您正在处理 Excel 文件,我认为不值得付出努力,除非您有一些库可以从内存缓冲区读取它)。 -
将文件从资源容器复制到临时目录(可以使用
QTemporaryDir
创建一个目录),然后从那里使用该文件:QTemporaryDir tempDir; if (tempDir.isValid()) { const QString tempFile = tempDir.path() + "/yourfile.xlsx"; if (QFile::copy(":/yourfile.xlsx", tempFile)) { // your file is now extracted to the filesystem } }
只知道,当tempDir
被销毁时,临时目录也会被删除,因此您的文件也会被删除。您可以通过禁用自动删除功能来避免这种情况:tempDir.setAutoRemove(false)
并在完成提取的文件后手动删除临时目录。
相关文章:
- 如何转换真实路径 CString c++
- 在基于英语的系统上将 UTF-8 路径转换为宽字符会引发异常
- 将带斜杠的 Unix 路径转换为 Windows 路径
- 如何将文件系统路径转换为字符串
- 无法转换 .CATPart 文件.错误:输入文件路径似乎包含不支持的字符
- 如何将Qt文件路径从资源转换为绝对路径?
- 将 URI 转换为路径
- 如何将应用程序URI转换为普通文件路径
- 将 UNC 路径转换为网络系统的本地路径
- 如何将目录路径转换为唯一的数字标识符 (Linux/C++)
- Direct2D:将文本转换为路径
- 如何将路径存储在这种结构中,以及如何将其转换为其他内容
- 转换在路径和矩形中的工作方式不同
- 使用 SHGetPathFromIDList 将 PIDL 转换为文件路径
- 如何使用Qt / C++将GUI转换为Windows上的路径
- 将相对路径转换为完整路径的系统功能,即使对于不存在的路径也适用
- 将Mac和Linux上的相对路径转换为绝对路径
- 将硬盘卷路径转换为正常路径
- C++:如何将%USERPROFILE%路径转换为文件路径(应该适用于Windows XP及更高版本)
- Visual c++图像文件路径转换成xml