電卓フォーム/複数継承
Qt Widgets Designer で作成したフォームをアプリケーションで使用する。
多重継承の例では、QWidget とユーザー・インターフェイス・クラス(Ui::CalculatorForm
)の両方をサブクラス化することで、Qt Widgets Designerで作成したフォームをアプリケーションで使用する方法を示します。
calculatorform.ui
ファイルをサブクラス化し、qmake
がuic
で処理するようにするには、calculatorform.ui
を.pro
ファイルに含める必要があります:
QT += widgets HEADERS = calculatorform.h SOURCES = calculatorform.cpp main.cpp FORMS = calculatorform.ui
プロジェクトがコンパイルされると、uic
が対応するui_calculatorform.h
を生成します。
電卓フォームの定義
CalculatorForm
の定義には、先ほど生成されたui_calculatorform.h
を含めます。
#include "ui_calculatorform.h"
前述したように、このクラスはQWidget とUi::CalculatorForm
のサブクラスです。
class CalculatorForm : public QWidget, private Ui::CalculatorForm { Q_OBJECT public: explicit CalculatorForm(QWidget *parent = nullptr); private slots: void on_inputSpinBox1_valueChanged(int value); void on_inputSpinBox2_valueChanged(int value); };
uic
が要求する自動接続命名規則に従って、2つのスロットが定義されている。これは、QMetaObject の自動接続機能によって、関係するすべての信号とスロットが自動的に接続されるようにするためです。
電卓フォームの実装
コンストラクタでは、setupUi()
を呼び出してユーザー・インターフェース・ファイルを読み込みます。setupUi はUi::CalculatorForm
のメソッドであることに注意してください。
on_inputSpinBox1_valueChanged()
とon_inputSpinBox2_valueChanged()
という2つのスロットがあります。これらのスロットは、両方のスピンボックスが発するvalueChanged() シグナルに応答します。片方のスピンボックスの値に変更があるたびに、その値を取り、もう片方のスピンボックスの値に追加します。
void CalculatorForm::on_inputSpinBox1_valueChanged(int value) { outputWidget->setText(QString::number(value + inputSpinBox2->value())); } void CalculatorForm::on_inputSpinBox2_valueChanged(int value) { outputWidget->setText(QString::number(value + inputSpinBox1->value())); }
main()
関数
main()
関数はQApplication とCalculatorForm
をインスタンス化します。calculator
オブジェクトはshow() 関数を呼び出すことで表示されます。
int main(int argc, char *argv[]) { QApplication app(argc, argv); CalculatorForm calculator; calculator.show(); return app.exec(); }
アプリケーションにフォームを組み込むには、さまざまなアプローチがあります。マルチプル継承はその 1 つです。その他のアプローチについては、「アプリケーションでデザイナーUIファイルを使用する」を参照してください。
© 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.