我想创建一个跨平台的应用程序。它不属于任何特定的平板电脑或智能手机。它应该在任何设备上运行。但是,我想在设备上创建一个文件。问题是我不知道在哪里保存它。因为它是跨平台的,所以我无法为该文件指定任何路径。任何想法如何独立于任何特定平台进行此类保存过程。
答案 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()
,它返回主目录的绝对路径。