電卓フォーム
Qt Widgets Designer で作成したフォームをアプリケーションで使用する
Calculator Form Example では、Qt Widgets Designer で作成したフォームをアプリケーションで使用する方法を、QWidget のサブクラスからユーザーインターフェイス情報を使用して示しています。
この例では、整数値の入力に使用する 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つの値が変わるたびに呼び出されます。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。