コア内部
Qt には、主に Qt Coreモジュールから提供されています。Qt はこれらのイネーブラを使用して、より高度な UI やアプリケーション開発コンポーネントを提供します。以下のトピックでは、最も重要なイネーブラを説明し、Qt がまだ提供していない特殊な機能を実装するためにそれらを使用する方法を示します。
オブジェクト、プロパティ、イベント
QObject クラスは Qt のオブジェクトモデルの基礎を形成し、多くの Qt クラスの親クラスです。このオブジェクト・モデルは、オブジェクト内のプロパティやメソッドの実行時のイントロスペクション、操作、呼び出しを可能にするメタ・オブジェクト・システムのような多くのメカニズムを導入しています。また、Qt のイベント・システムの基礎にもなっています。これは、QObject ベースのオブジェクト間で通信を行う低レベルの方法です。また、Qtのシグナルとスロットのメカニズムにも、高レベルの通信手段が用意されています。
加えて、QObject は、QObject::startTimer() でシンプルなタイミング・メカニズムを提供します。あるいは、QTimer クラスがタイマーのためのハイレベルなインターフェースを提供します。
コンテナ・クラス
コンテナは、他のオブジェクトのコレクションをインスタンスとするデータ構造である。コンテナの例としては、動的配列、キュー、リンクリスト、連想配列などがあります。Qt では、メモリ上のデータを構造化するための、テンプレート・ベースの汎用コンテナ・クラスを提供しています。
詳しくはコンテナクラスの一覧を参照してください。
国際化
Qt では、表示可能なテキスト文字列のエンコーディングに Unicode を使用しています。Unicode は、世界で一般的に使用されているすべての文字体系をサポートしており、クロスプラットフォーム開発に最適です。また、Qt の強力な国際化システムを使用することで、1 つのコードベースでいくつもの異なる言語をサポートするアプリケーションを作成することができます。
Qt でのプロセス間通信
Qt には、プロセス間の通信をサポートするクラスがいくつか用意されています。また、QProcess クラスを使って外部プロセスを起動したり管理したりすることもできます。
スレッド
Qt では、スレッドや並列化されたコードを安全かつプラットフォームに依存しない方法で管理する機能を提供しています。
プラットフォームのサポート
Qt ではプラットフォームに依存しないコードを書くことができ、同じコードベースを変更することなく異なるプラットフォーム用にコンパイルし、デプロイすることができます。プラットフォーム固有の機能を使用したり、システムライブラリと統合する必要がある場合、Qt はそのためのソリューションも提供します。
Qt は Qt Platform Abstraction(QPA)を使用してターゲットプラットフォームのウィンドウシステムと統合します。QPA はウィンドウシステムを抽象化したもので、Qt を新しいプラットフォームに簡単かつ迅速に移植することができます。そのようなシステムの一つがWaylandプロトコルです。QtはWaylandと共に、組み込みハードウェア上でマルチプロセスのグラフィカルユーザーインターフェースをサポートする軽量ウィンドウシステムとして使用することができます。
Qt Platform AbstractionはQtのプラグインシステムを使用します。このプラグインシステムは、Qt を特定の領域で拡張するための API を提供します(新しい画像フォーマットやデータベースドライバのサポートの追加など)。
- Qt プラットフォームの抽象化
- Qt プラグインの作成方法
- Endian Conversion Functions - QtEndian ヘッダからエンディアンを処理する関数
© 2025 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.