このページでは

ウィジェットのチュートリアル

はじめに

ウィジェットは、Qt で構築されるグラフィカルユーザーインターフェース(GUI)アプリケーションの基本的な構成要素です。各 GUI コンポーネント(ボタン、ラベル、テキストエディタなど)は、ユーザーインターフェースウィンドウ内のどこかに配置されるか、あるいは独立したウィンドウとして表示される、widget のインスタンスです。 各ウィジェットのタイプは、QWidget のサブクラスによって提供されます。 自体は、QObject のサブクラスです。

QWidget は抽象クラスではありません。他のウィジェットのコンテナとして使用でき、最小限の手間でサブクラス化して新しいカスタムウィジェットを作成することもできます。QWidget は、他のQWidgetを配置するウィンドウを作成するためによく使用されます。

QObjectと同様に、QWidgetも所有関係を示す親オブジェクトを指定して作成することができ、これにより、オブジェクトが不要になった際に確実に削除されるようになります。 ウィジェットの場合、この親子関係にはさらなる意味があります。つまり、各子ウィジェットは、その親ウィジェットが占める画面領域内に表示されるのです。これは、ウィンドウ・ウィジェットを削除すると、その中に含まれるすべての子ウィジェットも削除されることを意味します。

main関数の記述

Qt GUIの例の多くは、main.cpp ファイルを用意するというパターンに従っています。このファイルには、アプリケーションを初期化する標準的なコードに加え、アプリケーションのロジックやカスタムGUIコンポーネントを含む任意の数のソースファイルやヘッダーファイルが含まれています。

main.cpp における典型的なmain() 関数は、次のような構成になっています。

#include <QtWidgets>

// Include header files for application components.
// ...

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // Set up and show widgets.
    // ...

    return app.exec();
}

まず、QApplication オブジェクトが生成されます。このオブジェクトは、コマンドラインから渡された引数で設定できます。ウィジェットの作成と表示が完了した後、QApplication::exec()が呼び出され、Qtのイベントループが開始されます。この関数が戻るまで、制御はQtに渡されます。最後に、main() はQApplication::exec()が返す値を返します。

簡単なウィジェットの例

これらの簡単なウィジェットの例は、いずれもmain() 関数内で完全に記述されています。

実用的なウィジェットの例

これらのより高度な例では、ウィジェットやレイアウトを作成するコードは別のファイルに格納されています。たとえば、メインウィンドウのGUIは、QMainWindow のサブクラスのコンストラクタ内で作成される場合があります。

例のビルド

Qt を入手するためにバイナリパッケージをインストールした場合、あるいは Qt を自分でコンパイルした場合は、このチュートリアルで説明されている例はすでにビルドされており、実行可能な状態になっているはずです。それらを修正して再コンパイルしたい場合は、以下の手順に従ってください。

  1. コマンドプロンプトで、変更した例が含まれているディレクトリに移動します。
  2. `qmake ` と入力し、Return を押します。これが動作しない場合は、実行ファイルがパスに含まれていることを確認するか、完全なパスを指定してください。
  3. Linux/Unix および macOS では、「make 」と入力してReturn キーを押します。Visual Studio を使用している Windows では、「nmake 」と入力してReturn キーを押します。

現在のディレクトリに実行ファイルが作成されます。Windows では、このファイルは `debug ` または `release ` というサブディレクトリにある場合があります。この実行ファイルを実行すると、サンプルコードの動作を確認できます。

© 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.