계산기 양식/다중 상속
애플리케이션에서 Qt Widgets Designer 으로 만든 폼 사용하기.
다중 상속 예제에서는 애플리케이션에서 Qt Widgets DesignerQWidget 과 사용자 인터페이스 클래스인 Ui::CalculatorForm
을 모두 서브클래싱하여 애플리케이션에서 사용하는 방법을 보여줍니다.
calculatorform.ui
파일을 서브클래싱하고 qmake
이 uic
을 사용하여 처리하도록 하려면 아래와 같이 .pro
파일에 calculatorform.ui
을 포함해야 합니다:
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
에서 요구하는 자동 연결 명명 규칙에 따라 두 개의 슬롯이 정의됩니다. 이는 QMetaObject 의 자동 연결 기능이 관련된 모든 신호와 슬롯을 자동으로 연결하도록 하기 위한 것입니다.
계산기 폼 구현
생성자에서 setupUi()
을 호출하여 사용자 인터페이스 파일을 로드합니다. setupUi는 Ui::CalculatorForm
의 메서드입니다.
on_inputSpinBox1_valueChanged()
와 on_inputSpinBox2_valueChanged()
두 개의 슬롯을 포함합니다. 이 슬롯은 두 스핀 박스가 방출하는 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(); }
폼을 애플리케이션에 포함하기 위한 다양한 접근 방식이 있습니다. 다중 상속 접근 방식은 그중 하나에 불과합니다. 사용 가능한 다른 접근 방식에 대한 자세한 내용은 애플리케이션에서 디자이너 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.