データの入出力
このページでは、Qt を使用してデータを取得および保存するさまざまな方法の概要を説明します。
データの保存と読み込み
QIODevice クラスは、 Qt Core。データの読み取りや書き込みに使用されるすべてのクラスは、このクラスを継承しています。
デバイスの例としては、QFile 、QBuffer 、QTcpSocket 、QProcess などがあります。QFile は、QIODevice インターフェースを使用して、テキスト、バイナリファイル、およびリソースの読み書きに使用されます。QFile は単独で使用することもできますが、QTextStream やQDataStream と組み合わせて使用するとより便利です。
QBuffer クラスは、QByteArray に対するQIODevice インターフェースを提供します。QTcpSocket を使用すると、開発者はTCP接続を確立し、データストリームを転送することができます。QProcess は、外部プログラムを起動したり、そのプロセスからの読み取りや書き込みを行うために使用されます。
- 入出力およびネットワーク(I/O関連クラスの一覧)
- ファイルおよびデータストリーム関数
シリアル化されたデータ
Qt API は、いくつかのユースケースにおけるデータのシリアライズをサポートしています。
- Qt のJSONサポートは、JSON データの解析、変更、保存を行うための使いやすい C++ API を提供しています。
- QDataStream クラスは、バイナリデータのシリアライズを提供します。QIODevice
- Qt XML C++ Classes XML 向けに、XML ストリーミングおよび DOM 標準の C++ 実装を提供します
データベース
この Qt SQL モジュールは、ドライバプラグインを使用して、いくつかのデータベースAPIと通信します。Qtには、SQLite、MySQL、DB2、Borland InterBase、Oracle、ODBC、およびPostgreSQL用のドライバがあります。また、Qtに必要なドライバが提供されていない場合は、独自のドライバを開発することも可能です。
Qt SQLクラスは、3つのレイヤーに分類できます。
| レイヤー | 目的 | 例となるクラス |
|---|---|---|
|
|
|
SQLite を除くすべての SQL ドライバでは、データベースシステムをホストしているサーバーに接続できます。組み込みの MySQL サーバーを使用する場合、そのデータベースシステムを利用するために MySQL サーバーは不要です。
SQL データベースドライバのビルド方法については、「SQL データベースドライバ」を参照してください。
Qt SQLite プラグインは、ローカルストレージに非常に適しています。SQLite は、小さな (~350 KiB) C ライブラリに収められたリレーショナルデータベース管理システムです。 他のデータベース管理システムとは対照的に、SQLiteはクライアントアプリケーションからアクセスされる独立したプロセスではなく、アプリケーションに組み込まれた構成要素です。SQLiteは単一のファイル上で動作し、接続を開く際にはそのファイルをデータベース名として指定する必要があります。ファイルが存在しない場合、SQLiteはファイルの作成を試みます。
SQLiteには、マルチユーザーおよびマルチトランザクションに関していくつかの制限があります。異なるトランザクションから同じファイルに対して読み取りや書き込みを行うと、いずれかのトランザクションがコミットまたはロールバックされるまで、アプリケーションがフリーズする可能性があります。
ドライバ部分の設定が完了すると、QSqlQueryModel 、QSqlTableModel 、およびQSqlRelationalTableModel の各クラスを使用してデータにアクセスできます。QSqlTableModel およびQSqlRelationalTableModel は、Qtのアイテムビューで使用できる編集可能なモデルを提供します。QSqlTableModel は単一のテーブルに対する読み取り/書き込みアクセスが可能であるのに対し、QSqlRelationalTableModel はメインテーブル(外部キーを持つテーブルではない)に対する読み取り/書き込みアクセスが可能です。
以下のページには、アプリケーションへの SQL の組み込みに関する情報が掲載されています:
Qt XMLのサポート
Qt XML には、XML ストリームを読み込み、解析し、さらにこれらのストリームに書き込むための API が用意されています。以下の主要なクラスは、必要なインフラストラクチャを提供することで、これらの操作を容易にします。
- QDomDocument `class` は、XMLドキュメント全体をドキュメントツリーとして表現し、ドキュメントのデータへの主要なアクセスを提供します。
- このクラスには、ドキュメントデータを作成するためのいくつかの関数が用意されています。例えば、createElement()、createTextNode()、createComment()、createCDATASection()、createProcessingInstruction()、createAttribute()、createEntityReference()などです。
- QXmlStreamReader クラスは、XMLを読み取るためのパーサーを提供します。これは、外部パーシング済みエンティティを含まない、ウェルフォームなXML 1.0パーサーです。
- このクラスは、XMLネームスペースを理解し、解決します。たとえば、StartElementの場合、namespaceUri()は要素が属するネームスペースを返し、name()は要素のローカル名を返します。namespaceUri()とname()の組み合わせにより、要素を一意に識別できます。
- XMLドキュメントツリー全体をメモリに格納しないため、CPU負荷は高くありません。報告された時点での現在のトークンのみを格納します。
- QXmlStreamWriter クラスは、XMLライター向けにシンプルなストリーミングAPIを提供します。これは、XMLの書き込みを行うQXmlStreamReader の対応クラスであり、setDevice()で指定されたQIODevice 上で動作します。
- これは、書き込み対象となるすべてのXMLトークンやイベントに対して専用の関数を提供するシンプルなAPIです。
- 要素や属性を書き込む際、指定された namespaceUri に基づいて名前空間のプレフィックス付けを自動的に行います。特定の標準化されたプレフィックスを使用する必要がある場合は、writeNamespace() または writeDefaultNamespace() を使用して名前空間を手動で宣言することで、ライターにそれらの使用を強制することができます。
- 生成されたXMLデータに改行やインデントを追加して自動的にフォーマットし、読みやすくすることができます。この機能は、auto-formattingプロパティを有効にすることで利用できます。
以下のトピックでは、Qt XML のサポートについてさらに詳しく解説しています:
Qt における JSON
JSONは、読みやすく解析しやすい、テキストベースのデータ交換用オープン標準です。これは、「オブジェクト」と呼ばれる単純なデータ構造や連想配列を表現するために使用されます。JavaScriptと関連していますが、言語に依存しない表記形式です。
オブジェクトには、次の2つの形式があります:
| 名前と値のペアの集合 | 値の順序付きリスト |
|---|---|
| |
ローカルストレージ
ローカルストレージ API を使用すると、QML および JavaScript から SQL データベース内のローカルオフラインストレージにアクセスすることができます。
これらのデータベースはユーザーごと、および QML ごとに固有のものですが、すべての QML アプリケーションからアクセス可能です。これらは、QDeclarativeEngine::offlineStoragePath() の Databases サブディレクトリに SQLite データベース (SQL データベースドライバ) として保存されます。
この API は、W3C ワーキングドラフト 2009 年 10 月 29 日版(HTML5 Web Database API)の同期 API に準拠しています。
Local Storage API の基本的な使用例については、「Qt Quick の例 - Local Storage」を参照してください。
QSettings クラス
QSettings クラスは、アプリケーション設定の永続的な保存機能を提供します。通常、アプリケーションは前回のセッションの設定を記憶しています。
設定の保存方法はプラットフォームによって異なります。たとえば、Windows ではレジストリに保存されますが、macOS では XML ファイルに保存されます。
QSettings QSettings を使用することで、アプリケーション設定を移植性の高い方法で保存および復元できます。 オブジェクトの生成と破棄は軽量かつ高速です。 のオブジェクトを作成する際は、アプリケーション名だけでなく、組織名も指定することを推奨します。例:QSettings
QSettings settings("MyCompany", "Accountancy");リソース
Qtリソースシステムは、アプリケーションの実行ファイル内にバイナリファイルを格納するためのプラットフォーム非依存のメカニズムです。これは、アプリケーションが特定のファイルや一連のファイルを頻繁に必要とする場合に便利です。また、その特定のファイルが失われるのを防ぐ役割も果たします。
リソースデータは、バイナリにコンパイルされてアプリケーションコードから直接アクセスできるようにすることも、アプリケーションによって動的にバイナリリソースを作成し、リソースシステムに登録することもできます。
デフォルトでは、リソースは、ソースツリーに保存されているのと同じファイル名に「:/ 」というプレフィックスを付けたもの、または「qrc」スキームのURLを使用して、アプリケーションコードからアクセスできます。
接続性
ファイルのアーカイブ
アーカイブファイルとは、ドライブ上で占有するスペースを削減するために、通常は圧縮されたファイルやディレクトリの集合体です。アーカイブファイルの例としては、ZIP、TAR、RAR、7z などがあります。
Qt は、zlib によって生成されたアーカイブをサポートしています(qCompress() および qUncompress() を参照)。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.