Taschenrechner-Formular/Mehrfachvererbung

Verwendung eines mit Qt Widgets Designer erstellten Formulars in einer Anwendung.

Das Beispiel für Mehrfachvererbung zeigt, wie ein mit Qt Widgets Designer erstelltes Formular in einer Anwendung verwendet werden kann, indem sowohl QWidget als auch die Klasse der Benutzeroberfläche, Ui::CalculatorForm, unterklassifiziert werden.

Um die Datei calculatorform.ui zu unterklassifizieren und sicherzustellen, dass qmake sie mit uic verarbeitet, müssen wir calculatorform.ui in die Datei .pro einbinden, wie unten gezeigt:

QT += widgets

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

Wenn das Projekt kompiliert wird, erzeugt die uic eine entsprechende ui_calculatorform.h.

CalculatorForm Definition

In die Definition von CalculatorForm fügen wir die zuvor generierte ui_calculatorform.h ein.

#include "ui_calculatorform.h"

Wie bereits erwähnt, ist die Klasse eine Unterklasse sowohl von QWidget als auch von 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);
};

Zwei Slots werden gemäß der von uic geforderten Konvention zur automatischen Benennung von Verbindungen definiert. Damit soll sichergestellt werden, dass die automatischen Verbindungsfunktionen von QMetaObject alle beteiligten Signale und Slots automatisch verbinden.

Implementierung von CalculatorForm

Im Konstruktor rufen wir setupUi() auf, um die Benutzerschnittstellendatei zu laden. Beachten Sie, dass setupUi eine Methode von Ui::CalculatorForm ist.

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

Wir fügen zwei Slots ein, on_inputSpinBox1_valueChanged() und on_inputSpinBox2_valueChanged(). Diese Slots reagieren auf das Signal valueChanged(), das beide Spinnboxen ausgeben. Immer wenn sich der Wert eines Spinnkastens ändert, nehmen wir diesen Wert und addieren ihn zu dem Wert, den der andere Spinnkasten hat.

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

Die Funktion main() instanziiert QApplication und CalculatorForm. Das Objekt calculator wird durch Aufrufen der Funktion show() angezeigt.

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

Es gibt verschiedene Ansätze, um Formulare in Anwendungen einzubinden. Der Ansatz der Mehrfachvererbung ist nur einer von ihnen. Weitere Informationen zu den anderen verfügbaren Ansätzen finden Sie unter Verwenden einer Designer UI-Datei in Ihrer Anwendung.

Beispielprojekt @ code.qt.io

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