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
- horizontalScrollBarPolicy : Qt::ScrollBarPolicy
- sizeAdjustPolicy : SizeAdjustPolicy
- verticalScrollBarPolicy : Qt::ScrollBarPolicy
Ö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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QAbstractScrollArea::AdjustIgnored | 0 | Der Scrollbereich verhält sich wie bisher – es erfolgt keine Anpassung. |
QAbstractScrollArea::AdjustToContents | 2 | Der Scrollbereich passt sich immer an den Viewport an |
QAbstractScrollArea::AdjustToContentsOnFirstShow | 1 | Der 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.