電卓フォーム
Qt Widgets Designer で作成したフォームをアプリケーションで使用します。
電卓フォームの例では、QWidget サブクラスのユーザーインターフェイス情報を使用して、Qt Widgets Designer で作成したフォームをアプリケーションで使用する方法を示します。
この例では、整数値の入力に使用する 2 つのスピン ボックスと、それらの合計を示すラベルを示します。スピンボックスのいずれかが更新されるたびに、ウィジェットとフォーム間のシグナルスロット接続により、ラベルも更新されます。
準備
この例のユーザーインターフェイスは、Qt Widgets Designerを使用して完全に設計されています。その結果、フォーム、使用されるウィジェット、それらの間のシグナル・スロット接続、およびその他の標準的なユーザー・インターフェイス・プロパティが記述されたUIファイルが作成されます。
サンプルがこのファイルを使用できるように、CMAKE_AUTOUIC
機能を有効にし、ソース・ファイルに UI ファイルをリストします:
set(CMAKE_AUTOUIC ON) qt_add_executable(calculatorform calculatorform.cpp calculatorform.h calculatorform.ui main.cpp )
qmake
については、サンプルのプロジェクト・ファイルにFORMS
宣言を含める必要があります:
FORMS = calculatorform.ui
プロジェクトがビルドされると、uic
、フォームを構築するためのヘッダーファイルが作成されます。
CalculatorForm クラスの定義
CalculatorForm
クラスはcalculatorform.ui
ファイルに記述されたユーザーインターフェイスを使用します。フォームとその内容にアクセスするには、ビルドプロセス中にuic
が作成したui_calculatorform.h
ヘッダーファイルをインクルードする必要があります:
#include "ui_calculatorform.h"
フォーム自体はQWidget に基づいているので、QWidget をサブクラス化してCalculatorForm
クラスを定義します:
class CalculatorForm : public QWidget { Q_OBJECT public: explicit CalculatorForm(QWidget *parent = nullptr); private slots: void updateResult(); private: Ui::CalculatorForm ui; };
コンストラクタとは別に、このクラスは計算を実行し、それに応じて出力ウィジェットを更新するプライベートスロットupdateResult()
を含んでいます。プライベート・メンバ変数ui
はフォームを参照し、ユーザ・インターフェースの内容にアクセスするために使用されます。
CalculatorForm クラスの実装
コンストラクタは単に基底クラスのコンストラクタを呼び出し、フォームのユーザーインターフェイスを設定し、シグナルQSpinBox::valueChanged() をスロットupdateResult()
に接続します。
CalculatorForm::CalculatorForm(QWidget *parent) : QWidget(parent) { ui.setupUi(this); connect(ui.inputSpinBox1, &QSpinBox::valueChanged, this, &CalculatorForm::updateResult); connect(ui.inputSpinBox2, &QSpinBox::valueChanged, this, &CalculatorForm::updateResult); }
ユーザー・インターフェースはsetupUI()
関数で設定します。この関数の引数としてthis
を渡し、CalculatorForm
ウィジェット自体をユーザーインターフェースのコンテナとして使用します。
スロットupdateResult()
は値を加算し、結果を出力ウィジェットにセットします:
void CalculatorForm::updateResult() { const int sum = ui.inputSpinBox1->value() + ui.inputSpinBox2->value(); ui.outputWidget->setText(QString::number(sum)); }
スピンボックスの1つの値が変わるたびに呼び出されます。
© 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.