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() ).