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