Auf dieser Seite

QAbstractScrollArea Class

Das Widget „QAbstractScrollArea“ stellt einen Bildlaufbereich mit bedarfsgesteuerten Bildlaufleisten bereit. Mehr...

Kopfzeile: #include <QAbstractScrollArea>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Erbt von: QFrame
Vererbt an:

QAbstractItemView, QGraphicsView, QMdiArea, QPlainTextEdit, QScrollArea sowie QTextEdit

Öffentliche Typen

enum SizeAdjustPolicy { AdjustIgnored, AdjustToContents, AdjustToContentsOnFirstShow }

Eigenschaften

Öffentliche Funktionen

QAbstractScrollArea(QWidget *parent = nullptr)
virtual ~QAbstractScrollArea()
void addScrollBarWidget(QWidget *widget, Qt::Alignment alignment)
QWidget *cornerWidget() const
QScrollBar *horizontalScrollBar() const
Qt::ScrollBarPolicy horizontalScrollBarPolicy() const
QSize maximumViewportSize() const
QWidgetList scrollBarWidgets(Qt::Alignment alignment)
void setCornerWidget(QWidget *widget)
void setHorizontalScrollBar(QScrollBar *scrollBar)
void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy)
void setSizeAdjustPolicy(QAbstractScrollArea::SizeAdjustPolicy policy)
void setVerticalScrollBar(QScrollBar *scrollBar)
void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy)
void setViewport(QWidget *widget)
virtual void setupViewport(QWidget *viewport)
QAbstractScrollArea::SizeAdjustPolicy sizeAdjustPolicy() const
QScrollBar *verticalScrollBar() const
Qt::ScrollBarPolicy verticalScrollBarPolicy() const
QWidget *viewport() const

Neu implementierte öffentliche Funktionen

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

Geschützte Funktionen

virtual void scrollContentsBy(int dx, int dy)
void setViewportMargins(const QMargins &margins)
void setViewportMargins(int left, int top, int right, int bottom)
virtual bool viewportEvent(QEvent *event)
QMargins viewportMargins() const
virtual QSize viewportSizeHint() const

Neu implementierte geschützte Funktionen

virtual void contextMenuEvent(QContextMenuEvent *e) override
virtual void dragEnterEvent(QDragEnterEvent *event) override
virtual void dragLeaveEvent(QDragLeaveEvent *event) override
virtual void dragMoveEvent(QDragMoveEvent *event) override
virtual void dropEvent(QDropEvent *event) override
virtual bool event(QEvent *event) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void mouseDoubleClickEvent(QMouseEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *event) override
virtual void resizeEvent(QResizeEvent *event) override
virtual void wheelEvent(QWheelEvent *e) override

Ausführliche Beschreibung

QAbstractScrollArea ist eine Low-Level-Abstraktion eines Bildlaufbereichs. Der Bereich stellt ein zentrales Widget bereit, das als Ansichtsfenster bezeichnet wird und in dem der Inhalt des Bereichs gescrollt wird (d. h., die sichtbaren Teile des Inhalts werden im Ansichtsfenster dargestellt).

Neben dem Viewport befindet sich eine vertikale Bildlaufleiste und darunter eine horizontale Bildlaufleiste. Wenn der gesamte Inhalt des Bereichs in den Viewport passt, kann jede Bildlaufleiste je nach ihrer Eigenschaft „ Qt::ScrollBarPolicy “ entweder sichtbar oder ausgeblendet sein. Wenn eine Bildlaufleiste ausgeblendet ist, wird der Viewport vergrößert, um den gesamten verfügbaren Platz auszufüllen. Wenn eine Bildlaufleiste wieder sichtbar wird, wird der Viewport verkleinert, um Platz für die Bildlaufleiste zu schaffen.

Es ist möglich, einen Randbereich um den Ansichtsbereich herum zu reservieren, siehe ` setViewportMargins()`. Diese Funktion wird hauptsächlich verwendet, um ein ` QHeaderView `-Widget über oder neben dem Bildlaufbereich zu platzieren. Unterklassen von `QAbstractScrollArea` sollten Ränder implementieren.

Wenn Sie von QAbstractScrollArea erben, müssen Sie Folgendes tun:

  • Steuern Sie die Bildlaufleisten, indem Sie deren Bereich, Wert und Seitenschritt festlegen und deren Bewegungen verfolgen.
  • Zeichnen Sie den Inhalt des Bereichs im Viewport entsprechend den Werten der Bildlaufleisten.
  • Verarbeiten Sie die vom Ansichtsbereich empfangenen Ereignisse in ` viewportEvent()` – insbesondere Ereignisse zur Größenänderung.
  • Verwenden Sie ` viewport->update() `, um den Inhalt des Ansichtsbereichs zu aktualisieren, anstatt ` update()`, da alle Zeichenvorgänge im Ansichtsbereich stattfinden.

Bei einer Bildlaufleisten-Richtlinie von ` Qt::ScrollBarAsNeeded ` (Standard) zeigt `QAbstractScrollArea` Bildlaufleisten an, wenn sie einen Bildlaufbereich ungleich Null bieten, und blendet sie andernfalls aus.

Die Bildlaufleisten und der Ansichtsbereich sollten aktualisiert werden, sobald der Ansichtsbereich ein Größenänderungsereignis erhält oder sich die Größe des Inhalts ändert. Der Ansichtsbereich muss außerdem aktualisiert werden, wenn sich die Werte der Bildlaufleisten ändern. Die Anfangswerte der Bildlaufleisten werden oft festgelegt, wenn der Bereich neuen Inhalt erhält.

Wir geben ein einfaches Beispiel, in dem wir einen Scrollbereich implementiert haben, der beliebige QWidget scrollen kann. Wir machen das Widget zu einem Kind des Ansichtsbereichs; auf diese Weise müssen wir nicht berechnen, welcher Teil des Widgets gezeichnet werden soll, sondern können das Widget einfach mit QWidget::move() verschieben. Wenn sich der Inhalt des Bereichs oder die Größe des Ansichtsbereichs ändert, gehen wir wie folgt vor:

QSize areaSize = viewport()->size();
QSize  widgetSize = widget->size();

verticalScrollBar()->setPageStep(areaSize.height());
horizontalScrollBar()->setPageStep(areaSize.width());
verticalScrollBar()->setRange(0, widgetSize.height() - areaSize.height());
horizontalScrollBar()->setRange(0, widgetSize.width() - areaSize.width());
updateWidgetPosition();

Wenn sich die Werte der Bildlaufleisten ändern, müssen wir die Position des Widgets aktualisieren, d. h. den Teil des Widgets ermitteln, der im Viewport gezeichnet werden soll:

int hvalue = horizontalScrollBar()->value();
int vvalue = verticalScrollBar()->value();
QPoint topLeft = viewport()->rect().topLeft();

widget->move(topLeft.x() - hvalue, topLeft.y() - vvalue);

Um die Bewegungen der Bildlaufleisten zu verfolgen, implementieren Sie die virtuelle Funktion ` scrollContentsBy()` neu. Um das Bildlaufverhalten fein abzustimmen, verbinden Sie sich mit dem Signal ` QAbstractSlider::actionTriggered()` einer Bildlaufleiste und passen Sie den ` QAbstractSlider::sliderPosition ` nach Belieben an.

Der Einfachheit halber stellt QAbstractScrollArea alle Viewport-Ereignisse im virtuellen Handler „ viewportEvent()“ zur Verfügung. Die spezialisierten Handler von „ QWidget “ werden in den Fällen, in denen dies sinnvoll ist, auf Viewport-Ereignisse umgeleitet. Die neu zugeordneten spezialisierten Handler sind: ` paintEvent()`, ` mousePressEvent()`, ` mouseReleaseEvent()`, ` mouseDoubleClickEvent()`, ` mouseMoveEvent()`, ` wheelEvent()`, ` dragEnterEvent()`, ` dragMoveEvent()`, ` dragLeaveEvent()`, ` dropEvent()`, ` contextMenuEvent()` und ` resizeEvent()`.

QScrollArea, das von QAbstractScrollArea erbt, ermöglicht ein flüssiges Scrollen für beliebige „ QWidget “ (d. h., das Widget wird Pixel für Pixel gescrollt). Sie müssen QAbstractScrollArea nur unterklassen, wenn Sie ein spezielleres Verhalten benötigen. Dies ist beispielsweise der Fall, wenn der gesamte Inhalt des Bereichs nicht für die Darstellung auf einem „ QWidget “ geeignet ist oder wenn Sie kein flüssiges Scrollen wünschen.

Siehe auch „ QScrollArea “.

Dokumentation zu den Mitgliedstypen

enum QAbstractScrollArea::SizeAdjustPolicy

Diese Enumeration legt fest, wie sich der Größenhinweis des „ QAbstractScrollArea “ anpassen soll, wenn sich die Größe des Ansichtsfensters ändert.

KonstanteWertBeschreibung
QAbstractScrollArea::AdjustIgnored0Der Scrollbereich verhält sich wie bisher – es erfolgt keine Anpassung.
QAbstractScrollArea::AdjustToContents2Der Scrollbereich passt sich immer an den Viewport an
QAbstractScrollArea::AdjustToContentsOnFirstShow1Der Bildlaufbereich passt sich beim ersten Anzeigen an seinen Ansichtsbereich an.

Eigenschaftsdokumentation

horizontalScrollBarPolicy : Qt::ScrollBarPolicy

Diese Eigenschaft enthält die Richtlinie für die horizontale Bildlaufleiste

Die Standardrichtlinie lautet „ Qt::ScrollBarAsNeeded “.

Zugriffsfunktionen:

Qt::ScrollBarPolicy horizontalScrollBarPolicy() const
void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy)

Siehe auch „ verticalScrollBarPolicy “.

sizeAdjustPolicy : SizeAdjustPolicy

Diese Eigenschaft enthält die Richtlinie, die beschreibt, wie sich die Größe des Bildlaufbereichs ändert, wenn sich die Größe des Ansichtsfensters ändert.

Die Standardrichtlinie lautet „ QAbstractScrollArea::AdjustIgnored “. Durch Ändern dieser Eigenschaft wird die Größe des Scrollbereichs möglicherweise tatsächlich angepasst.

Zugriffsfunktionen:

QAbstractScrollArea::SizeAdjustPolicy sizeAdjustPolicy() const
void setSizeAdjustPolicy(QAbstractScrollArea::SizeAdjustPolicy policy)

verticalScrollBarPolicy : Qt::ScrollBarPolicy

Diese Eigenschaft enthält die Richtlinie für die vertikale Bildlaufleiste

Die Standardrichtlinie lautet „ Qt::ScrollBarAsNeeded “.

Zugriffsfunktionen:

Qt::ScrollBarPolicy verticalScrollBarPolicy() const
void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy)

Siehe auch „ horizontalScrollBarPolicy “.

Dokumentation der Mitgliedsfunktionen

[explicit] QAbstractScrollArea::QAbstractScrollArea(QWidget *parent = nullptr)

Erstellt einen Viewport.

Das Argument „ parent “ wird an den Konstruktor „ QWidget “ übergeben.

[virtual noexcept] QAbstractScrollArea::~QAbstractScrollArea()

Löscht den Ansichtsbereich.

void QAbstractScrollArea::addScrollBarWidget(QWidget *widget, Qt::Alignment alignment)

Fügt „ widget “ als Bildlaufleisten-Widget an der durch „ alignment “ angegebenen Stelle ein.

Bildlaufleisten-Widgets werden neben der horizontalen oder vertikalen Bildlaufleiste angezeigt und können auf beiden Seiten davon platziert werden. Wenn die Bildlaufleisten-Widgets immer sichtbar sein sollen, setzen Sie die `scrollBarPolicy` für die entsprechende Bildlaufleiste auf ` AlwaysOn`.

alignment muss entweder „Qt::Alignleft“ oder „ Qt::AlignRight “ sein, was der horizontalen Bildlaufleiste entspricht, oder „ Qt::AlignTop “ und „ Qt::AlignBottom “, was der vertikalen Bildlaufleiste entspricht.

Ein Bildlaufleisten-Widget kann entweder durch eine Neuzuordnung des Widgets oder durch Löschen entfernt werden. Es ist auch möglich, ein Widget mit ` QWidget::hide()` auszublenden.

Das Bildlaufleisten-Widget wird so in der Größe angepasst, dass es in die Geometrie der Bildlaufleiste des aktuellen Stils passt. Im Folgenden wird der Fall für Bildlaufleisten-Widgets auf der horizontalen Bildlaufleiste beschrieben:

Die Höhe des Widgets wird so eingestellt, dass sie der Höhe der Bildlaufleiste entspricht. Um die Breite des Widgets zu steuern, verwenden Sie „ QWidget::setMinimumWidth “ und „ QWidget::setMaximumWidth “ oder implementieren Sie „ QWidget::sizeHint()“ und legen Sie eine horizontale Größenrichtlinie fest. Wenn Sie ein quadratisches Widget wünschen, rufen Sie „ QStyle::pixelMetric “ (QStyle::PM_ScrollBarExtent) auf und setzen Sie die Breite auf diesen Wert.

Siehe auch ` scrollBarWidgets()`.

[override virtual protected] void QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e)

Umsetzt: ` QWidget::contextMenuEvent` (`QContextMenuEvent *event`).

Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Kontextmenü-Ereignisse für das Widget ` viewport()` zu empfangen. Das Ereignis wird in ` e` übergeben.

Siehe auch QWidget::contextMenuEvent().

QWidget *QAbstractScrollArea::cornerWidget() const

Gibt das Widget in der Ecke zwischen den beiden Bildlaufleisten zurück.

Standardmäßig ist kein Eck-Widget vorhanden.

Siehe auch ` setCornerWidget()`.

[override virtual protected] void QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event)

Umsetzt: QWidget::dragEnterEvent(QDragEnterEvent *event).

Dieser Ereignishandler kann in einer Unterklasse neu implementiert werden, um Drag-Enter-Ereignisse (die über ` event` übergeben werden) für das Widget ` viewport()` zu empfangen.

Siehe auch QWidget::dragEnterEvent().

[override virtual protected] void QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event)

Umsetzt: QWidget::dragLeaveEvent(QDragLeaveEvent *event).

Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Drag-Leave-Ereignisse (die über ` event` übergeben werden) für das Widget ` viewport()` zu empfangen.

Siehe auch QWidget::dragLeaveEvent().

[override virtual protected] void QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event)

Umsetzt: QWidget::dragMoveEvent(QDragMoveEvent *event).

Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Drag-Move-Ereignisse (die in ` event` übergeben werden) für das Widget ` viewport()` zu empfangen.

Siehe auch QWidget::dragMoveEvent().

[override virtual protected] void QAbstractScrollArea::dropEvent(QDropEvent *event)

Umsetzt: QWidget::dropEvent(QDropEvent *event).

Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Drop-Ereignisse (die über ` event` übergeben werden) für das Widget ` viewport()` zu empfangen.

Siehe auch QWidget::dropEvent().

[override virtual protected] bool QAbstractScrollArea::event(QEvent *event)

Umsetzt: QFrame::event(QEvent *e).

Dies ist der Haupt-Ereignisbehandler für das Widget „ QAbstractScrollArea “ (nicht für den Scrollbereich „ viewport “ ()). Das angegebene „ event “ ist ein allgemeines Ereignisobjekt, das je nach Typ möglicherweise in die entsprechende Klasse umgewandelt werden muss.

Siehe auch „ QEvent::type()“.

QScrollBar *QAbstractScrollArea::horizontalScrollBar() const

Gibt die horizontale Bildlaufleiste zurück.

Siehe auch „ setHorizontalScrollBar()“, „ horizontalScrollBarPolicy “ und „ verticalScrollBar()“.

[override virtual protected] void QAbstractScrollArea::keyPressEvent(QKeyEvent *e)

Umsetzt: ` QWidget::keyPressEvent(QKeyEvent *event)`.

Diese Funktion wird bei Tastendruck mit dem Tastaturereignis „ e “ aufgerufen. Sie verarbeitet die Tasten „Bild auf“, „Bild ab“, „Auf“, „Ab“, „Links“ und „Rechts“ und ignoriert alle anderen Tastendrücke.

QSize QAbstractScrollArea::maximumViewportSize() const

Gibt die Größe des Ansichtsbereichs so zurück, als hätten die Bildlaufleisten keinen gültigen Bildlaufbereich.

[override virtual] QSize QAbstractScrollArea::minimumSizeHint() const

Implementiert eine Zugriffsfunktion für die Eigenschaft „ QWidget::minimumSizeHint “ neu.

[override virtual protected] void QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e)

Übersetzt: ` QWidget::mouseDoubleClickEvent(QMouseEvent *event)`.

Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Doppelklick-Ereignisse für das Widget „ viewport()“ zu empfangen. Das Ereignis wird in „ e “ übergeben.

Siehe auch QWidget::mouseDoubleClickEvent().

[override virtual protected] void QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e)

Übersetzt: ` QWidget::mouseMoveEvent(QMouseEvent *event)`.

Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Mausbewegungsereignisse für das Widget „ viewport()“ zu empfangen. Das Ereignis wird in „ e “ übergeben.

Siehe auch QWidget::mouseMoveEvent().

[override virtual protected] void QAbstractScrollArea::mousePressEvent(QMouseEvent *e)

Umsetzt: ` QWidget::mousePressEvent(QMouseEvent *event)`.

Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Mausklick-Ereignisse für das Widget „ viewport()“ zu empfangen. Das Ereignis wird in „ e “ übergeben.

Die Standardimplementierung ruft ` QWidget::mousePressEvent()` für die standardmäßige Popup-Behandlung auf.

Siehe auch ` QWidget::mousePressEvent()`.

[override virtual protected] void QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e)

Umsetzt: ` QWidget::mouseReleaseEvent(QMouseEvent *event)`.

Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Mausloslass-Ereignisse für das Widget ` viewport()` zu empfangen. Das Ereignis wird in ` e` übergeben.

Siehe auch QWidget::mouseReleaseEvent().

[override virtual protected] void QAbstractScrollArea::paintEvent(QPaintEvent *event)

Umsetzt: ` QFrame::paintEvent` (`QPaintEvent *`).

Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Zeichenereignisse (die über ` event` übergeben werden) für das Widget ` viewport()` zu empfangen.

Hinweis: Wenn Sie ein ` QPainter` erstellen, muss dieses auf dem Widget ` viewport()` angewendet werden.

Siehe auch QWidget::paintEvent().

[override virtual protected] void QAbstractScrollArea::resizeEvent(QResizeEvent *event)

Umsetzt: QWidget::resizeEvent(QResizeEvent *event).

Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Größenänderungsereignisse (die über ` event` übergeben werden) für das Widget ` viewport()` zu empfangen.

Wenn `resizeEvent()` aufgerufen wird, verfügt der Viewport bereits über seine neue Geometrie: Die neue Größe ist über die Funktion ` QResizeEvent::size()` abrufbar, die alte Größe über ` QResizeEvent::oldSize()`.

Siehe auch ` QWidget::resizeEvent()`.

QWidgetList QAbstractScrollArea::scrollBarWidgets(Qt::Alignment alignment)

Gibt eine Liste der derzeit festgelegten Bildlaufleisten-Widgets zurück. „ alignment “ kann eine beliebige Kombination der vier Positionskennzeichen sein.

Siehe auch addScrollBarWidget().

[virtual protected] void QAbstractScrollArea::scrollContentsBy(int dx, int dy)

Dieser virtuelle Handler wird aufgerufen, wenn die Bildlaufleisten mit ` dx` und ` dy` verschoben werden, und folglich sollte der Inhalt des Ansichtsbereichs entsprechend gescrollt werden.

Die Standardimplementierung ruft einfach ` update()` auf den gesamten ` viewport()` an; Unterklassen können diesen Handler zu Optimierungszwecken neu implementieren oder – wie bei ` QScrollArea ` – um ein Inhalts-Widget zu verschieben. Die Parameter ` dx ` und ` dy ` dienen der Vereinfachung, damit die Klasse weiß, wie weit gescrollt werden soll (nützlich z. B. bei Pixelverschiebungen). Sie können diese Werte aber auch einfach ignorieren und direkt zu der Position scrollen, die die Bildlaufleisten anzeigen.

Der Aufruf dieser Funktion zum programmgesteuerten Scrollen ist ein Fehler; verwenden Sie stattdessen die Bildlaufleisten (z. B. durch direkten Aufruf von ` QScrollBar::setValue()`).

void QAbstractScrollArea::setCornerWidget(QWidget *widget)

Legt fest, dass das Widget in der Ecke zwischen den beiden Bildlaufleisten auf „ widget “ gesetzt wird.

Wahrscheinlich möchten Sie auch mindestens einen der Bildlaufleistenmodi auf „ AlwaysOn “ setzen.

Wenn Sie „ nullptr “ übergeben, wird in der Ecke kein Widget angezeigt.

Ein eventuell zuvor vorhandenes Eck-Widget wird ausgeblendet.

Sie können setCornerWidget() zu verschiedenen Zeitpunkten mit demselben Widget aufrufen.

Alle hier festgelegten Widgets werden vom Bildlaufbereich gelöscht, wenn dieser zerstört wird, es sei denn, Sie weisen dem Widget nach dem Festlegen eines anderen Eck-Widgets (oder „ nullptr “) separat ein neues übergeordnetes Element zu.

Jedes neu festgelegte Widget sollte kein aktuelles übergeordnetes Element haben.

Standardmäßig ist kein Eck-Widget vorhanden.

Siehe auch „ cornerWidget()“ und „ horizontalScrollBarPolicy “.

void QAbstractScrollArea::setHorizontalScrollBar(QScrollBar *scrollBar)

Ersetzt die vorhandene horizontale Bildlaufleiste durch scrollBar und überträgt alle Eigenschaften des Schiebereglers der bisherigen Bildlaufleiste auf die neue Bildlaufleiste. Die bisherige Bildlaufleiste wird anschließend gelöscht.

QAbstractScrollArea xml-ph-0000@deepl.internal stellt standardmäßig bereits horizontale und vertikale Bildlaufleisten bereit. Sie können diese Funktion aufrufen, um die standardmäßige horizontale Bildlaufleiste durch eine eigene, benutzerdefinierte Bildlaufleiste zu ersetzen.

Siehe auch „ horizontalScrollBar()“ und „ setVerticalScrollBar()“.

void QAbstractScrollArea::setVerticalScrollBar(QScrollBar *scrollBar)

Ersetzt die vorhandene vertikale Bildlaufleiste durch scrollBar und weist der neuen Bildlaufleiste alle Eigenschaften des Schiebereglers der bisherigen Bildlaufleiste zu. Die bisherige Bildlaufleiste wird anschließend gelöscht.

QAbstractScrollArea xml-ph-0000@deepl.internal stellt standardmäßig bereits vertikale und horizontale Bildlaufleisten bereit. Sie können diese Funktion aufrufen, um die standardmäßige vertikale Bildlaufleiste durch eine eigene, benutzerdefinierte Bildlaufleiste zu ersetzen.

Siehe auch „ verticalScrollBar()“ und „ setHorizontalScrollBar()“.

void QAbstractScrollArea::setViewport(QWidget *widget)

Legt den Ansichtsbereich auf die angegebene Adresse widget fest. Der „ QAbstractScrollArea “ übernimmt die Verantwortung für die angegebene Adresse widget.

Wenn „ widget “ ein „ nullptr “ ist, weist „ QAbstractScrollArea “ dem Viewport eine neue Instanz von „ QWidget “ zu.

Siehe auch viewport().

[protected] void QAbstractScrollArea::setViewportMargins(const QMargins &margins)

Legt die „ margins “ rund um den Bildlaufbereich fest. Dies ist nützlich für Anwendungen wie Tabellenkalkulationen mit „gesperrten“ Zeilen und Spalten. Der Randbereich bleibt leer; platzieren Sie Widgets in diesem ungenutzten Bereich.

Standardmäßig sind alle Ränder auf Null gesetzt.

Siehe auch „ viewportMargins()“.

[protected] void QAbstractScrollArea::setViewportMargins(int left, int top, int right, int bottom)

Legt die Ränder um den Bildlaufbereich auf left, top, right und bottom fest. Dies ist nützlich für Anwendungen wie Tabellenkalkulationen mit „gesperrten“ Zeilen und Spalten. Der Randbereich bleibt leer; platzieren Sie Widgets in diesem ungenutzten Bereich.

Beachten Sie, dass diese Funktion häufig von QTreeView und QTableView aufgerufen wird; daher müssen die Ränder von Unterklassen von QAbstractScrollArea implementiert werden. Wenn die Unterklassen in Elementansichten verwendet werden sollen, dürfen sie diese Funktion zudem nicht aufrufen.

Standardmäßig sind alle Ränder auf Null gesetzt.

Siehe auch viewportMargins().

[virtual] void QAbstractScrollArea::setupViewport(QWidget *viewport)

Dieser Slot wird von ` QAbstractScrollArea ` aufgerufen, nachdem ` setViewport` (`viewport`) aufgerufen wurde. Implementieren Sie diese Funktion in einer Unterklasse von ` QAbstractScrollArea ` neu, um das neue ` viewport ` zu initialisieren, bevor es verwendet wird.

Siehe auch setViewport().

[override virtual] QSize QAbstractScrollArea::sizeHint() const

Implementiert: ` QFrame::sizeHint()` const.

Gibt die Eigenschaft „sizeHint“ des Scrollbereichs zurück. Die Größe wird mithilfe von ` viewportSizeHint()` ermittelt, wobei bei Bedarf zusätzlicher Platz für Bildlaufleisten berücksichtigt wird.

QScrollBar *QAbstractScrollArea::verticalScrollBar() const

Gibt die vertikale Bildlaufleiste zurück.

Siehe auch „ setVerticalScrollBar()“, „ verticalScrollBarPolicy “ und „ horizontalScrollBar()“.

QWidget *QAbstractScrollArea::viewport() const

Gibt das Viewport-Widget zurück.

Verwenden Sie die Funktion „ QScrollArea::widget()“, um den Inhalt des Viewport-Widgets abzurufen.

Siehe auch „ setViewport()“ und „ QScrollArea::widget()“.

[virtual protected] bool QAbstractScrollArea::viewportEvent(QEvent *event)

Der Haupt-Ereignis-Handler für den Scrollbereich (das Widget „ viewport()“). Er verarbeitet das angegebene „ event “ und kann von Unterklassen aufgerufen werden, um ein sinnvolles Standardverhalten bereitzustellen.

Gibt ` true ` zurück, um dem Ereignissystem mitzuteilen, dass das Ereignis verarbeitet wurde und keine weitere Bearbeitung erfordert; andernfalls gibt es ` false ` zurück, um anzuzeigen, dass das Ereignis weitervermittelt werden soll.

Sie können diese Funktion in einer Unterklasse neu implementieren, wir empfehlen jedoch, stattdessen einen der spezialisierten Ereignisbehandler zu verwenden.

Spezialisierte Handler für Viewport-Ereignisse sind: paintEvent(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), wheelEvent(), dragEnterEvent(), dragMoveEvent(), dragLeaveEvent(), dropEvent(), contextMenuEvent() und resizeEvent().

[protected] QMargins QAbstractScrollArea::viewportMargins() const

Gibt die Ränder um den Bildlaufbereich zurück. Standardmäßig sind alle Ränder auf Null gesetzt.

Siehe auch „ setViewportMargins()“.

[virtual protected] QSize QAbstractScrollArea::viewportSizeHint() const

Gibt die empfohlene Größe für den Viewport zurück. Die Standardimplementierung gibt ` viewport() ->sizeHint()` zurück. Beachten Sie, dass es sich hierbei lediglich um die Größe des Viewports handelt, ohne dass Scrollleisten sichtbar sind.

[override virtual protected] void QAbstractScrollArea::wheelEvent(QWheelEvent *e)

Umsetzt: ` QWidget::wheelEvent` (`QWheelEvent *event`).

Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Mausrad-Ereignisse für das Widget ` viewport()` zu empfangen. Das Ereignis wird in ` e` übergeben.

Siehe auch QWidget::wheelEvent().

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