gpt4 book ai didi

c++ - 如何将Qt文件路径从资源路径转换为绝对路径?

转载 作者:可可西里 更新时间:2023-11-01 13:27:00 32 4
gpt4 key购买 nike

我需要像这样接收绝对文件路径

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 被销毁时,临时目录也会被删除,因此您的文件也会被删除。您可以通过禁用 auto-remove 来避免这种情况。功能:tempDir.setAutoRemove(false) 并在完成提取文件后手动删除临时目录。

关于c++ - 如何将Qt文件路径从资源路径转换为绝对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43880820/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com