Widgets Tutorial
Einführung
Widgets sind die grundlegenden Bausteine für Anwendungen mit grafischer Benutzeroberfläche (GUI), die mit Qt erstellt werden. Jede GUI-Komponente (z.B. Schaltflächen, Beschriftungen, Texteditoren) ist eine widget, die irgendwo in einem Fenster der Benutzeroberfläche platziert oder als eigenständiges Fenster angezeigt wird. Jede Art von Widget wird von einer Unterklasse von QWidget bereitgestellt, die wiederum eine Unterklasse von QObject ist.
QWidget ist keine abstrakte Klasse. Sie kann als Container für andere Widgets verwendet werden, und sie kann mit minimalem Aufwand unterklassifiziert werden, um neue, benutzerdefinierte Widgets zu erstellen. QWidget wird häufig verwendet, um ein Fenster zu erstellen, in dem andere QWidgetplatziert werden.
Wie bei QObjectkönnen QWidgets mit übergeordneten Objekten erstellt werden, um die Eigentümerschaft anzuzeigen und sicherzustellen, dass Objekte gelöscht werden, wenn sie nicht mehr verwendet werden. Bei Widgets haben diese Eltern-Kind-Beziehungen eine zusätzliche Bedeutung: Jedes Kind-Widget wird innerhalb des von seinem Eltern-Widget belegten Bildschirmbereichs angezeigt. Das bedeutet, dass beim Löschen eines Fenster-Widgets alle untergeordneten Widgets, die es enthält, ebenfalls gelöscht werden.
Schreiben einer Hauptfunktion
Viele der mit Qt gelieferten GUI-Beispiele folgen dem Muster einer main.cpp
-Datei, die den Standardcode zur Initialisierung der Anwendung sowie eine beliebige Anzahl anderer Quell-/Header-Dateien enthält, die die Anwendungslogik und benutzerdefinierte GUI-Komponenten beinhalten.
Eine typische main()
-Funktion in main.cpp
sieht wie folgt aus:
#include <QtWidgets> // Include header files for application components. // ... int main(int argc, char *argv[]) { QApplication app(argc, argv); // Set up and show widgets. // ... return app.exec(); }
Zunächst wird ein QApplication Objekt erstellt, das mit Argumenten konfiguriert werden kann, die über die Befehlszeile übergeben werden. Nachdem die Widgets erstellt und angezeigt worden sind, wird QApplication::exec() aufgerufen, um die Ereignisschleife von Qt zu starten. Die Kontrolle geht an Qt über, bis diese Funktion zurückkehrt. Schließlich gibt main()
den von QApplication::exec() zurückgegebenen Wert wieder.
Einfache Widget-Beispiele
Jedes dieser einfachen Widget-Beispiele ist vollständig innerhalb der Funktion main()
geschrieben.
- Erstellen eines Fensters
- Erstellen von untergeordneten Widgets
- Verwendung von Layouts
- Verschachtelte Layouts
Beispiele für Widgets aus der realen Welt
In diesen fortgeschrittenen Beispielen wird der Code, der die Widgets und Layouts erstellt, in anderen Dateien gespeichert. Zum Beispiel kann die GUI für ein Hauptfenster im Konstruktor einer QMainWindow Unterklasse erstellt werden.
Bauen der Beispiele
Wenn Sie ein Binärpaket installiert haben, um Qt zu erhalten, oder wenn Sie Qt selbst kompiliert haben, sollten die in diesem Tutorial beschriebenen Beispiele bereits gebaut und lauffähig sein. Wenn Sie sie ändern und neu kompilieren möchten, folgen Sie diesen Schritten:
- Gehen Sie an einer Eingabeaufforderung in das Verzeichnis, das das von Ihnen geänderte Beispiel enthält.
- Geben Sie
qmake
ein und drücken Sie Return. Wenn dies nicht funktioniert, vergewissern Sie sich, dass sich die ausführbare Datei in Ihrem Pfad befindet, oder geben Sie ihren vollständigen Speicherort ein. - Unter Linux/Unix und macOS geben Sie
make
ein und drücken Sie Return; unter Windows mit Visual Studio geben Sienmake
ein und drücken Sie Return.
Es wird eine ausführbare Datei im aktuellen Verzeichnis erstellt. Unter Windows kann sich diese Datei in einem Unterverzeichnis debug
oder release
befinden. Sie können diese ausführbare Datei ausführen, um den Beispielcode bei der Arbeit zu sehen.
© 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.