Sur cette page

Formulaire de calculatrice / Héritage multiple

Utilisation d'un formulaire créé avec Qt Widgets Designer dans une application.

L'exemple d’héritage multiple montre comment utiliser un formulaire créé avec Qt Widgets Designer dans une application en créant une sous-classe à la fois de QWidget et de la classe d’interface utilisateur, à savoir Ui::CalculatorForm.

Pour créer une sous-classe du fichier « calculatorform.ui » et s’assurer que « qmake » le traite avec « uic », il faut inclure « calculatorform.ui » dans le fichier « .pro », comme indiqué ci-dessous :

QT += widgets

HEADERS = calculatorform.h
SOURCES = calculatorform.cpp main.cpp
FORMS = calculatorform.ui

Lors de la compilation du projet, le fichier « uic » générera un fichier « ui_calculatorform.h » correspondant.

Définition de CalculatorForm

Dans la définition de CalculatorForm, nous incluons le fichier ui_calculatorform.h généré précédemment.

#include "ui_calculatorform.h"

Comme mentionné précédemment, la classe est une sous-classe à la fois de ` QWidget ` et 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);
};

Deux slots sont définis conformément à la convention de nommage des connexions automatiques requise par ` uic`. Cela permet de garantir que les fonctionnalités de connexion automatique de ` QMetaObject` connectent automatiquement tous les signaux et slots concernés.

Implémentation de CalculatorForm

Dans le constructeur, nous appelons setupUi() pour charger le fichier d’interface utilisateur. Notez que setupUi est une méthode de Ui::CalculatorForm.

CalculatorForm::CalculatorForm(QWidget *parent)
    : QWidget(parent)
{
    setupUi(this);
}

Nous incluons deux slots, ` on_inputSpinBox1_valueChanged() ` et ` on_inputSpinBox2_valueChanged()`. Ces slots répondent au signal ` valueChanged()` émis par les deux champs à roue. Chaque fois que la valeur d’un champ à roue change, nous prenons cette valeur et l’ajoutons à celle de l’autre champ à roue.

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() Fonction

La fonction main() instancie QApplication et CalculatorForm. L’objet calculator est affiché en appelant la fonction show().

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    CalculatorForm calculator;
    calculator.show();
    return app.exec();
}

Il existe différentes approches pour intégrer des formulaires dans des applications. L’approche par héritage multiple n’est qu’une d’entre elles. Consultez la section « Utilisation d’un fichier d’interface utilisateur du concepteur d’ Qt Widgets s dans votre application » pour plus d’informations sur les autres approches disponibles.

Exemple de projet @ code.qt.io

© 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.