QScrollArea Class
Die Klasse „QScrollArea“ bietet eine scrollbare Ansicht eines anderen Widgets. Mehr...
| Kopfzeile: | #include <QScrollArea> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Erbt von: | QAbstractScrollArea |
Eigenschaften
- alignment : Qt::Alignment
- widgetResizable : bool
Öffentliche Funktionen
| QScrollArea(QWidget *parent = nullptr) | |
| virtual | ~QScrollArea() |
| Qt::Alignment | alignment() const |
| void | ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50) |
| void | ensureWidgetVisible(QWidget *childWidget, int xmargin = 50, int ymargin = 50) |
| void | setAlignment(Qt::Alignment) |
| void | setWidget(QWidget *widget) |
| void | setWidgetResizable(bool resizable) |
| QWidget * | takeWidget() |
| QWidget * | widget() const |
| bool | widgetResizable() const |
Neu implementierte öffentliche Funktionen
| virtual bool | focusNextPrevChild(bool next) override |
| virtual QSize | sizeHint() const override |
Neu implementierte geschützte Funktionen
| virtual bool | event(QEvent *e) override |
| virtual bool | eventFilter(QObject *o, QEvent *e) override |
| virtual void | resizeEvent(QResizeEvent *) override |
| virtual void | scrollContentsBy(int dx, int dy) override |
| virtual QSize | viewportSizeHint() const override |
Ausführliche Beschreibung
Ein Bildlaufbereich dient dazu, den Inhalt eines untergeordneten Widgets innerhalb eines Rahmens anzuzeigen. Wenn das Widget die Größe des Rahmens überschreitet, kann die Ansicht Bildlaufleisten bereitstellen, sodass der gesamte Bereich des untergeordneten Widgets angezeigt werden kann. Das untergeordnete Widget muss mit ` setWidget()` angegeben werden. Beispiel:
QLabel *imageLabel = new QLabel;
QImage image("happyguy.png");
imageLabel->setPixmap(QPixmap::fromImage(image));
scrollArea = new QScrollArea;
scrollArea->setBackgroundRole(QPalette::Dark);
scrollArea->setWidget(imageLabel);Der obige Code erstellt einen Bildlaufbereich (siehe Abbildungen unten), der ein Bildlabel enthält. Beim Skalieren des Bildes kann der Bildlaufbereich die erforderlichen Bildlaufleisten bereitstellen:
![]() | ![]() | ![]() |
Das Erscheinungsbild der Bildlaufleisten hängt von der aktuell festgelegten Eigenschaft ` scroll bar policies` ab. Sie können das Erscheinungsbild der Bildlaufleisten mithilfe der von ` QAbstractScrollArea` geerbten Funktionalität steuern.
Beispielsweise können Sie die Eigenschaften ` QAbstractScrollArea::horizontalScrollBarPolicy ` und ` QAbstractScrollArea::verticalScrollBarPolicy ` festlegen. Wenn Sie möchten, dass sich die Bildlaufleisten dynamisch anpassen, sobald sich der Inhalt des Bildlaufbereichs ändert, können Sie die Funktionen ` horizontalScrollBar()` und ` verticalScrollBar()` verwenden (die Ihnen den Zugriff auf die Bildlaufleisten ermöglichen) und die Werte der Bildlaufleisten bei jeder Änderung des Inhalts des Bildlaufbereichs mithilfe der Funktion ` QScrollBar::setValue()` festlegen.
Sie können das untergeordnete Widget mit der Funktion ` widget()` abrufen. Die Ansicht lässt sich mit der Funktion ` setWidgetResizable()` in der Größe anpassen. Die Ausrichtung des Widgets kann mit ` setAlignment()` festgelegt werden.
Zwei Hilfsfunktionen, „ ensureVisible()“ und „ ensureWidgetVisible()“, stellen sicher, dass ein bestimmter Bereich des Inhalts innerhalb des Ansichtsbereichs sichtbar ist, indem der Inhalt bei Bedarf gescrollt wird.
Größenhinweise und Layouts
Bei der Verwendung eines Scrollbereichs zur Anzeige des Inhalts eines benutzerdefinierten Widgets ist es wichtig, sicherzustellen, dass die Eigenschaft „ size hint “ des untergeordneten Widgets auf einen geeigneten Wert gesetzt ist. Wird für das untergeordnete Widget ein Standard- QWidget verwendet, kann es erforderlich sein, die Funktion ` QWidget::setMinimumSize()` aufzurufen, um sicherzustellen, dass der Inhalt des Widgets innerhalb des Scrollbereichs korrekt angezeigt wird.
Wird ein Scrollbereich verwendet, um den Inhalt eines Widgets anzuzeigen, das in einem Layout angeordnete untergeordnete Widgets enthält, ist zu beachten, dass die Größenrichtlinie des Layouts auch die Größe des Widgets bestimmt. Dies ist besonders wichtig zu wissen, wenn Sie beabsichtigen, den Inhalt des Layouts dynamisch zu ändern. In solchen Fällen führt die Einstellung der Eigenschaft ` size constraint ` des Layouts auf einen Wert, der Einschränkungen für die minimale und/oder maximale Größe des Layouts vorsieht (z. B. ` QLayout::SetMinAndMaxSize`), dazu, dass die Größe des Bildlaufbereichs aktualisiert wird, sobald sich der Inhalt des Layouts ändert.
Siehe auch „ QAbstractScrollArea “ und „ QScrollBar “.
Dokumentation zur Eigenschaft
alignment : Qt::Alignment
Diese Eigenschaft legt die Ausrichtung des Widgets des Bildlaufbereichs fest
Eine gültige Ausrichtung ist eine Kombination aus den folgenden Flags:
Qt::AlignLeftQt::AlignHCenterQt::AlignRightQt::AlignTopQt::AlignVCenterQt::AlignBottom
Standardmäßig bleibt das Widget an der oberen linken Ecke des Scrollbereichs verankert.
Zugriffsfunktionen:
| Qt::Alignment | alignment() const |
| void | setAlignment(Qt::Alignment) |
widgetResizable : bool
Diese Eigenschaft legt fest, ob der Scrollbereich die Größe des Ansichts-Widgets anpassen soll
Ist diese Eigenschaft auf „false“ gesetzt (Standardeinstellung), passt sich der Bildlaufbereich an die Größe seines Widgets an. Unabhängig von dieser Eigenschaft können Sie die Größe des Widgets programmgesteuert mit widget()->resize() ändern, woraufhin sich der Bildlaufbereich automatisch an die neue Größe anpasst.
Ist diese Eigenschaft auf „true“ gesetzt, passt der Bildlaufbereich die Größe des Widgets automatisch an, um Bildlaufleisten zu vermeiden, wo dies möglich ist, oder um zusätzlichen Platz zu nutzen.
Zugriffsfunktionen:
| bool | widgetResizable() const |
| void | setWidgetResizable(bool resizable) |
Dokumentation zu Mitgliedsfunktionen
[explicit] QScrollArea::QScrollArea(QWidget *parent = nullptr)
Erstellt einen leeren Bildlaufbereich mit der angegebenen „ parent “.
Siehe auch ` setWidget()` .
[virtual noexcept] QScrollArea::~QScrollArea()
Löscht den Scrollbereich und dessen untergeordnetes Widget.
Siehe auch ` setWidget()`.
void QScrollArea::ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50)
Blättert den Inhalt des Bildlaufbereichs so, dass der Punkt (x, y) innerhalb des Sichtbereichs sichtbar ist, dessen Ränder in Pixeln durch xmargin und ymargin festgelegt sind. Kann der angegebene Punkt nicht erreicht werden, wird der Inhalt zur nächstgelegenen gültigen Position geblättert. Der Standardwert für beide Ränder beträgt 50 Pixel.
void QScrollArea::ensureWidgetVisible(QWidget *childWidget, int xmargin = 50, int ymargin = 50)
Blättert den Inhalt des Bildlaufbereichs so, dass die Koordinate ` childWidget ` von ` QScrollArea::widget()` innerhalb des Darstellungsbereichs sichtbar ist, wobei die Ränder in Pixeln durch ` xmargin ` und ` ymargin` festgelegt werden. Kann der angegebene Punkt nicht erreicht werden, wird der Inhalt zur nächstgelegenen gültigen Position geblättert. Der Standardwert für beide Ränder beträgt 50 Pixel.
[override virtual protected] bool QScrollArea::event(QEvent *e)
Umsetzt: ` QAbstractScrollArea::event(QEvent *event)`.
[override virtual protected] bool QScrollArea::eventFilter(QObject *o, QEvent *e)
Implementiert: ` QObject::eventFilter` (`QObject *watched, QEvent *event`).
[override virtual] bool QScrollArea::focusNextPrevChild(bool next)
Implementiert: ` QWidget::focusNextPrevChild` (bool next).
[override virtual protected] void QScrollArea::resizeEvent(QResizeEvent *)
Implementiert: ` QAbstractScrollArea::resizeEvent(QResizeEvent *event)`.
[override virtual protected] void QScrollArea::scrollContentsBy(int dx, int dy)
Implementiert: ` QAbstractScrollArea::scrollContentsBy(int dx, int dy)`.
void QScrollArea::setWidget(QWidget *widget)
Legt die „ widget “ des Bildlaufbereichs fest.
Das „ widget “ wird zu einem untergeordneten Element des Scrollbereichs und wird zerstört, wenn der Scrollbereich gelöscht wird oder wenn ein neues Widget festgelegt wird.
Die Eigenschaft „ autoFillBackground “ des Widgets wird auf „ true “ gesetzt.
Wenn der Scrollbereich zum Zeitpunkt des Hinzufügens von „ widget “ sichtbar ist, müssen Sie ihn explizit mit „ show()“ ausblenden.
Beachten Sie: Sie müssen das Layout von ` widget ` hinzufügen, bevor Sie diese Funktion aufrufen; wenn Sie es später hinzufügen, ist der ` widget ` nicht sichtbar – unabhängig davon, wann Sie den Scrollbereich mit ` show()` anzeigen. In diesem Fall können Sie den ` widget ` später auch nicht mit ` show()` anzeigen.
Siehe auch ` widget()`.
[override virtual] QSize QScrollArea::sizeHint() const
Implementiert: ` QAbstractScrollArea::sizeHint()` const.
QWidget *QScrollArea::takeWidget()
Entfernt das Widget aus dem Bildlaufbereich und überträgt die Eigentumsrechte an dem Widget an den Aufrufer.
Siehe auch ` widget()`.
[override virtual protected] QSize QScrollArea::viewportSizeHint() const
Implementiert: ` QAbstractScrollArea::viewportSizeHint()` const.
QWidget *QScrollArea::widget() const
Gibt das Widget des Scrollbereichs zurück oder „ nullptr “, falls kein Widget vorhanden ist.
Siehe auch setWidget().
© 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.


