在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 开始,有关 iosandroid 的文档完整。这是因为在较新的 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 Ruby:动态创建表并从文本文件输入数据

QT 5.5.1 删除了 -universal 选项:无法在 MAC 上创建通用二进制文件

在 Linux 上使用 Qt 为 Windows 创建可执行文件

在 Ubuntu 上运行 Qt 创建的可执行文件时出错

为 Qt 项目创建可执行文件

Qt (C++):QFile 成功创建文本文件但不写入