Qt Mac 应用程序存储数据路径

Posted

技术标签:

【中文标题】Qt Mac 应用程序存储数据路径【英文标题】:Qt Mac Application storing data path 【发布时间】:2018-02-11 09:45:16 【问题描述】:

我有一个被拒绝的应用程序,通过检查它,我发现我需要在应用程序包中写入(我还不清楚)。 我使用了以下代码 Qt 5.9.1:

QStandardPaths::StandardLocation type = static_cast<QStandardPaths::StandardLocation>(QStandardPaths::DataLocation);
QString directory = QStandardPaths::writableLocation(type);

当我在 qt creator 中调试路径时,它是 目录=“/Users/myname/Library/Application Support/Myname/Myapplicaiton”

我尝试了以下结果,结果相同

QString directory = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation).first();

但我们需要在应用程序包中添加数据。据我了解,应该是 myapplication.app\data\(如有错误请指正)

在 Qt 中为 appstore 应用程序定义路径的正确方法是什么?

有没有办法提供写入此路径的权限?

谢谢

【问题讨论】:

您是否尝试过使用 QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation).first() + "/data"? 在应用程序包中更改或添加文件会破坏代码签名 - 我不确定是否愿意这样做。 是的,这会破坏代码签名吗? 我注意到,appstore 在 12.6 上拒绝了该应用程序崩溃,但在我的本地计算机上,它并没有崩溃。难道我需要某种权利来添加这条路径?任何人都知道如何使用这个密钥或类似的密钥来获得写权限:com.apple.security.files.user-selected.read-write 权利com.apple.security.files.user-selected.read-write 允许您访问沙盒之外的文件。但是,用户必须通过打开/保存面板主动选择该文件。阅读PowerBox 的文档。 【参考方案1】:

在 MAC 上试试这个:

auto path =  QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
path += "/data";

【讨论】:

以上是关于Qt Mac 应用程序存储数据路径的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OS X 和 iOS 的 Core Data 中存储贝塞尔路径

恢复存储在应用程序照片中的文件夹路径图像(Mac OS)

QT (4.7) 头文件和库在 mac 上的位置(即路径)?

mac 下如何安装qt designer的路径在哪儿

Qt/C++ 在 Mac OSX 10 上将系统范围 QSettings 存储在哪里?

无法在 Mac 上使用 qt 应用程序打开文件