在Qt中的不同手机上创建一个文件

Era*_*cer 5 filesystems mobile qt android ios

我想创建一个跨平台的应用程序.它不属于任何特定的平板电脑或智能手机.它应该在任何设备上运行.但是,我想在设备上创建一个文件.问题是我不知道在哪里保存它.因为它是跨平台的,所以我无法为该文件指定任何路径.任何想法如何独立于任何特定平台进行此类保存过程.

BaC*_*Zzo 7

Qt提供了很好的课程QStandardPaths.直接来自文档:

QStandardPaths类提供访问标准路径的方法.此类包含用于查询本地文件系统上的标准位置的函数,用于常见任务,例如用户特定目录或系统范围的配置目录.

特别是你应该使用静态方法:

QStringList QStandardPaths::standardLocations(StandardLocation type)
Run Code Online (Sandbox Code Playgroud)

可以为主目录定义常见用法,如下所示:

QString basePath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation)[0]
Run Code Online (Sandbox Code Playgroud)

请注意,我已查询返回StringList的第一个条目,而不检查它是否为空.这是安全的,因为返回的对象永远不会为家庭位置空!情况并非总是如此,但文档对此非常详细,并且还说明了在每个特定平台上返回的位置.另请注意,如果未另外指定(请参阅特定情况的文档),则返回的第一个条目StringList始终是可写条目.

从Qt 5.5开始,关于iOS和Android的问题,文档已经完成.那是因为在较新的Qt版本上,iOS文件系统得到了正确和完全支持.对于小于5.2的版本,情况并非如此(例如,请参阅封闭的QTBUG-34199,但有关通过Qt发布周期的iOS 支持的更多详细信息,请阅读QTBUG-36171QStandardPaths).

最后,一个建议.如果您有兴趣通过USB在Android/iOS设备和PC之间共享文件,那么可以选择一个好的位置QStandardPaths::DownloadLocation.请注意,在iOS中必须定义文件共享的附加策略,即UIFileSharingEnabled必须在应用程序的信息plist中设置密钥.