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

时间:2014-10-27 21:21:35

标签: android ios qt mobile filesystems

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

2 个答案:

答案 0 :(得分:7)

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

  

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

特别要使用静态方法:

QStringList QStandardPaths::standardLocations(StandardLocation type)

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

QString basePath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation)[0]

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

从Qt 5.5起,文档完成以解决iOS和Android的问题。这是因为在较新的Qt版本上,iOS文件系统正确且完全支持。对于小于5.2的版本,情况并非如此(例如,请参阅已关闭的QTBUG-34199,但有关在{QT发布周期内支持iOS QStandardPaths的更多详细信息,请参阅QTBUG-36171。)

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

答案 1 :(得分:1)

您应该将文件保存在HOME/yourdirname/中。您可以使用QDir制作dirs,访问它们等。QDir与系统无关,并提供函数homePath(),它返回主目录的绝对路径。