Auf dieser Seite

Rechnerformular/Mehrfachvererbung

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

Das Beispiel zur Mehrfachvererbung zeigt, wie ein mit dem „Qt Widgets Designer“ erstelltes Formular in einer Anwendung verwendet wird, indem sowohl „ QWidget “ als auch die Benutzeroberflächenklasse „ Ui::CalculatorForm “ als Unterklassen definiert werden.

Um die „ calculatorform.ui “-Datei als Unterklasse zu definieren 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

Beim Kompilieren des Projekts generiert der „ uic “ eine entsprechende „ ui_calculatorform.h “-Datei.

Definition von „CalculatorForm“

In der Definition von „ CalculatorForm “ beziehen wir die zuvor generierte Klasse „ 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);
};

Es werden zwei Slots gemäß der von „ uic “ geforderten Namenskonvention für automatische Verbindungen definiert. Damit soll sichergestellt werden, dass die Funktionen zur automatischen Verbindung von „ QMetaObject “ alle beteiligten Signale und Slots automatisch miteinander verbinden.

Implementierung von `CalculatorForm`

Im Konstruktor rufen wir ` setupUi() ` auf, um die Benutzeroberflächendatei 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 Drehfelder aussenden. Immer wenn sich der Wert eines Drehfelds ändert, nehmen wir diesen Wert und addieren ihn zu dem Wert, den das andere Drehfeld gerade 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 Aufruf 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 davon. Weitere Informationen zu den anderen verfügbaren Ansätzen finden Sie unter „Verwenden einer Qt Widgets -Designer-UI-Datei in Ihrer Anwendung “.

Beispielprojekt @ 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.