在Qt中不同手机上创建文件
Posted
技术标签:
【中文标题】在Qt中不同手机上创建文件【英文标题】:Create a file on different mobile phones in Qt 【发布时间】:2014-10-27 21:21:35 【问题描述】:我想创建一个跨平台的应用程序。它不属于任何特定的平板电脑或智能手机。它应该可以在任何设备上运行。但是,我想在设备上创建一个文件。问题是我不知道在哪里保存它。因为它是跨平台的,所以我无法为该文件指定任何路径。任何想法如何独立于任何特定平台进行此类保存过程。
【问题讨论】:
【参考方案1】: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,但也请阅读 QTBUG-36171 了解有关 iOS QStandardPaths
支持整个 Qt 发布周期的更多详细信息)。
最后,一个建议。如果您对通过 USB 在 android/iOS 设备和 PC 之间共享文件感兴趣,一个不错的位置选择可以是QStandardPaths::DownloadLocation
。请注意,在 iOS 中必须定义额外的文件共享策略,即必须在应用的信息列表中设置 UIFileSharingEnabled
键。
【讨论】:
【参考方案2】:您应该将文件保存在HOME/yourdirname/
。您可以使用QDir
来创建目录、访问它们等。QDir
与系统无关,还提供了函数homePath()
,它返回主目录的绝对路径。
【讨论】:
以上是关于在Qt中不同手机上创建文件的主要内容,如果未能解决你的问题,请参考以下文章
QT 5.5.1 删除了 -universal 选项:无法在 MAC 上创建通用二进制文件