Calculadora Formulario/Herencia Múltiple
Uso de un formulario creado con Qt Widgets Designer en una aplicación.
El ejemplo de herencia múltiple muestra cómo utilizar un formulario creado con Qt Widgets Designer en una aplicación subclasificando tanto QWidget como la clase de interfaz de usuario, que es Ui::CalculatorForm.

Para subclasificar el archivo calculatorform.ui y asegurarnos de que qmake lo procesa con el uic, tenemos que incluir calculatorform.ui en el archivo .pro, como se muestra a continuación:
QT += widgets HEADERS = calculatorform.h SOURCES = calculatorform.cpp main.cpp FORMS = calculatorform.ui
Cuando se compile el proyecto, el uic generará el correspondiente ui_calculatorform.h.
Definición de CalculatorForm
En la definición de CalculatorForm, incluimos la clase ui_calculatorform.h que se generó anteriormente.
#include "ui_calculatorform.h"Como se mencionó anteriormente, la clase es una subclase tanto de QWidget como de 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); };
Se definen dos ranuras de acuerdo con la convención de nomenclatura de conexión automática requerida por uic. Esto es para asegurar que las facilidades de auto-conexión de QMetaObject conecten todas las señales y ranuras involucradas automáticamente.
Implementación de CalculatorForm
En el constructor, llamamos a setupUi() para cargar el archivo de interfaz de usuario. Nótese que setupUi es un método de Ui::CalculatorForm.
Incluimos dos ranuras, on_inputSpinBox1_valueChanged() y on_inputSpinBox2_valueChanged(). Estas ranuras responden a la señal valueChanged() que emiten ambas cajas de giro. Cada vez que hay un cambio en el valor de una caja de giro, tomamos ese valor y lo añadimos al valor que tenga la otra caja de giro.
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() Función
La función main() instanciará QApplication y CalculatorForm. El objeto calculator se muestra invocando la función show().
int main(int argc, char *argv[]) { QApplication app(argc, argv); CalculatorForm calculator; calculator.show(); return app.exec(); }
Existen varios enfoques para incluir formularios en las aplicaciones. El enfoque de Herencia Múltiple es sólo uno de ellos. Consulte Uso de un archivo de interfaz de usuario de diseñador en su aplicación para obtener más información sobre los demás enfoques disponibles.
© 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.