The QIODevice 类是所有文件和数据存储设备的基类,在 Qt Core 。用于读写数据的所有类均从其继承。
设备范例包括 QFile , QBuffer , QTcpSocket ,和 QProcess . QFile 用于读写文本、二进制文件及资源。 QBuffer 类提供 QIODevice 接口为 QByteArray . QTcpSocket 使开发者能建立 TCP 连接并传输数据流。 QProcess 用于启动外部程序,并对该进程进行读写。
The Qt SQL 模块使用驱动程序插件与多个数据库 API 通信。Qt 有驱动程序用于 SQLite 、MySQL、DB2、Borland InterBase、Oracle、ODBC 及 PostgreSQL。开发自己的驱动程序也是可能的,若 Qt 未提供所需的驱动程序。
Qt 的 SQL 类可分为 3 层:
层 | 目的 | 范例类 |
---|---|---|
|
|
|
采用所有 SQL 驱动程序,除了 SQLite ,可以连接到托管数据库系统的服务器。若使用嵌入式 MySQL 服务器,为使用数据库系统不需要 MySQL 服务器。
有关如何构建 SQL 数据库驱动程序的操作指南,见 SQL 数据库驱动程序 .
Qt SQLite 插件非常适合本地存储。 SQLite 是包含在小型 (~350 KiB) C 库中的关系数据库管理系统。相比其它数据库管理系统, SQLite 不是从客户端应用程序进行访问的单独进程,而是不可分割的一部分。 SQLite 对单个文件进行操作,必须将其设为数据库名称 (当打开连接时)。若文件不存在, SQLite 将试着创建它。
SQLite 对多用户和多事务有一些限定。若从不同事务读取 (或写入) 文件,应用程序可能冻结,直到提交 (或回滚) 某一事务。
一旦驱动程序部分被设置,就可访问数据使用类, QSqlQueryModel , QSqlTableModel ,和 QSqlRelationalTableModel . QSqlTableModel and QSqlRelationalTableModel 提供可以被用于 Qt 项视图的可编辑模型。 QSqlTableModel 能读/写访问单表,而 QSqlRelationalTableModel 能读/写访问主表 (而非带外键的表)。
以下页面包含把 SQL 纳入应用程序的有关信息:
Qt 提供用于读取和剖析 XML 流及写操作这些流的 API。以下关键类促进这些行动,通过提供必要基础设施:
除读写 XML 流外,Qt 还为以下额外用例提供 API:
以下话题对 Qt XML 支持提供更多洞察:
JSON 是基于文本的数据交换开放标准,易于读取和剖析。它被用于表示简单的数据结构和称为对象的关联数组。它与 JavaScript 相关,但独立于语言表示法形式。
对象可以采取 2 种形式:
|
本地存储 API 提供从 QML 和 JavaScript 访问本地离线 SQL 数据库存储的能力。
这些数据库是用户特定和 QML 特定的,但所有 QML 应用程序均可访问。它们存储在 QDeclarativeEngine::offlineStoragePath() 数据库子目录下如 SQLite 数据库 ( SQL 数据库驱动程序 ).
API 符合 HTML5 Web 数据库 API 的同步 API,W3C 工作草案 2009 年 10 月 29 日 ( HTML5 Web 数据库 API ).
见 Qt Quick 范例 - 本地存储 使用本地存储 API 的基本演示。
The QSettings 类为应用程序设置提供持久存储。通常,应用程序会记住其来自先前会话的设置。
设置在不同平台上的存储,是不同的。例如:在 Windows,它们被存储在注册表中,而在 macOS,它们被存储在 XML 文件中。
QSettings 使您能够以可移植方式保存和还原应用程序设置。构造和销毁 QSettings 对象是轻量、快速的。当创建对象 QSettings ,好的实践是不仅要指定应用程序名称,还指定组织名称。例如:
QSettings settings("MyCompany", "Accountancy");
QRS (资源系统) 是独立于平台的机制,用于在应用程序的可执行文件中存储二进制文件。这很顺手,若应用程序频繁需要某个文件 (或某组文件)。它还可以防止特定文件的丢失。
可以把资源数据编译成二进制并立即在应用程序代码中进行访问,或动态创建二进制资源并通过应用程序采用资源系统进行注册。
默认情况下,资源可以通过如在源树中存储的相同文件名从应用程序代码进行访问,采用
:/
前缀,或通过 URL 采用 qrc 方案。
存档文件是一批文件或目录,通常压缩以缩减在驱动器上消耗的空间。存档文件的范例是 ZIP、TAR、RAR 及 7z。
Qt 支持由 zlib 产生的存档 (见 qCompress() 和 qUncompress() ).