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