Widgets Tutorial - Verwendung von Layouts
Normalerweise werden untergeordnete Widgets innerhalb eines Fensters mit Hilfe von Layout-Objekten angeordnet, anstatt Positionen und Größen explizit festzulegen. Hier konstruieren wir ein Etikett und ein Zeilenbearbeitungs-Widget, die wir nebeneinander anordnen möchten.
#include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; QLabel *label = new QLabel(QApplication::translate("windowlayout", "Name:")); QLineEdit *lineEdit = new QLineEdit(); QHBoxLayout *layout = new QHBoxLayout(); layout->addWidget(label); layout->addWidget(lineEdit); window.setLayout(layout); window.setWindowTitle( QApplication::translate("windowlayout", "Window layout")); window.show(); return app.exec(); } |
![]() |
Das layout
Objekt, das wir konstruieren, verwaltet die Positionen und Größen der Widgets, die ihm mit der Funktion addWidget() übergeben werden. Das Layout selbst wird dem Fenster mit dem Aufruf von setLayout() übergeben. Layouts sind nur durch die Auswirkungen sichtbar, die sie auf die Widgets (und andere Layouts) haben, für deren Verwaltung sie verantwortlich sind.
Im obigen Beispiel ist die Eigentümerschaft der einzelnen Widgets nicht sofort klar. Da wir die Widgets und das Layout ohne übergeordnete Objekte konstruieren, würden wir ein leeres Fenster und zwei separate Fenster mit einer Beschriftung und einer Zeilenbearbeitung erwarten. Wenn wir jedoch dem Layout sagen, dass es die Beschriftung und die Zeilenbearbeitung verwalten soll und das Layout auf das Fenster setzen, werden sowohl die Widgets als auch das Layout selbst ''reparented'', um Kinder des Fensters zu werden.
© 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.