如何将文件从 Qrc 保存到应用程序目录

Posted

技术标签:

【中文标题】如何将文件从 Qrc 保存到应用程序目录【英文标题】:How to save a file from Qrc to application directory 【发布时间】:2021-07-11 22:32:36 【问题描述】:

我使用的是 Qt 5.15.1。

如果我的 Qt 应用程序的 qrc 文件中有一个文件,是否可以将该文件保存到应用程序的目录中,以便我可以将该文件用作文件系统上的普通文件?

QFile my_file(":/data/file.txt");
QDir my_app_dir(QCoreApplication::applicationDirPath());

在上面的代码中,如何将my_file 保存到my_app_dir

环境: MacOS Catalina Qt:商业版 5.15.1

【问题讨论】:

【参考方案1】:

您只需复制内容:

QFile my_file(":/data/file.txt");
QDir my_app_dir(QCoreApplication::applicationDirPath());
QString new_path = my_app_dir.absoluteFilePath("file.txt");
if(!my_file.copy(new_path))
    qDebug() << my_file.error() << my_file.errorString();

【讨论】:

@TheWaterProgrammer 这应该适用于任何操作系统,因为这是一项微不足道的任务,你试过了吗?如果您在询问之前尝试代码会很好。 我试过了。它挂起我的应用程序。因此想知道它是否在 macOS Catalina 上存在权限问题。 这取决于 applicationDirPath() 所在的位置,如果您没有权限写入,那么您将遇到问题。注意:最好在您的帖子中指出环境的特征,例如操作系统 对不起。我现在提到了环境。但我正在 android 上尝试这样做,以消除文件权限的因素。如果此代码适用于 Android,我会接受。文件权限是一个单独的问题。 my_file.copy 总是返回 false!

以上是关于如何将文件从 Qrc 保存到应用程序目录的主要内容,如果未能解决你的问题,请参考以下文章

如何将 qrc 数据包含到使用 CMake 编译的基于 Qt 的二进制文件中

如何从resources_rc.py恢复resource.qrc文件

Qt5 将 qrc 移至 DLL

如何使用 pandas read_pickle 从 qrc 资源文件中读取包含 pandas 数据框的 pickle 文件?

如何将文件保存到无临时目录并查看该目录中文件的内容?

如何将文件保存到 Android /system 目录?