QScrollBar Class

Das QScrollBar-Widget bietet eine vertikale oder horizontale Bildlaufleiste. Mehr...

Kopfzeile: #include <QScrollBar>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbt: QAbstractSlider

Öffentliche Funktionen

QScrollBar(QWidget *parent = nullptr)
QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr)
virtual ~QScrollBar()

Reimplementierte öffentliche Funktionen

virtual bool event(QEvent *event) override
virtual QSize sizeHint() const override

Geschützte Funktionen

virtual void initStyleOption(QStyleOptionSlider *option) const

Reimplementierte geschützte Funktionen

virtual void contextMenuEvent(QContextMenuEvent *event) override
virtual void hideEvent(QHideEvent *) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *) override
virtual void sliderChange(QAbstractSlider::SliderChange change) override
virtual void wheelEvent(QWheelEvent *event) override

Detaillierte Beschreibung

Eine Bildlaufleiste ist ein Steuerelement, das es dem Benutzer ermöglicht, auf Teile eines Dokuments zuzugreifen, die größer sind als das zur Anzeige verwendete Widget. Sie bietet eine visuelle Anzeige der aktuellen Position des Benutzers innerhalb des Dokuments und des sichtbaren Teils des Dokuments. Bildlaufleisten sind normalerweise mit anderen Steuerelementen ausgestattet, die eine genauere Navigation ermöglichen. Qt zeigt Bildlaufleisten auf eine Weise an, die für jede Plattform geeignet ist.

Wenn Sie eine scrollende Ansicht auf einem anderen Widget bereitstellen müssen, kann es bequemer sein, die Klasse QScrollArea zu verwenden, da diese ein Viewport-Widget und Scrollbars bereitstellt. QScrollBar ist nützlich, wenn Sie eine ähnliche Funktionalität für spezialisierte Widgets mit QAbstractScrollArea implementieren müssen, z. B. wenn Sie sich entscheiden, die Klasse QAbstractItemView zu unterteilen. Für die meisten anderen Situationen, in denen ein Schieberegler verwendet wird, um einen Wert innerhalb eines bestimmten Bereichs zu erhalten, ist die Klasse QSlider möglicherweise besser für Ihre Bedürfnisse geeignet.

Bildlaufleisten enthalten normalerweise vier separate Steuerelemente: einen Schieberegler, Bildlaufpfeile und ein Seitensteuerelement.
  • a. Der Schieberegler bietet eine Möglichkeit, schnell zu einem beliebigen Teil des Dokuments zu gelangen, unterstützt aber keine genaue Navigation in umfangreichen Dokumenten.
  • b. Die Bildlaufpfeile sind Drucktasten, mit denen man genau zu einer bestimmten Stelle in einem Dokument navigieren kann. Bei einer vertikalen Bildlaufleiste, die mit einem Texteditor verbunden ist, verschieben sie die aktuelle Position in der Regel um eine "Zeile" nach oben oder unten und passen die Position des Schiebereglers um einen kleinen Betrag an. In Editoren und Listenfeldern kann eine "Zeile" eine Textzeile bedeuten; in einem Bildbetrachter kann sie 20 Pixel bedeuten.
  • c. Die Seitensteuerung ist der Bereich, über den der Schieberegler gezogen wird (der Hintergrund der Bildlaufleiste). Wenn Sie hier klicken, wird die Bildlaufleiste um eine "Seite" in Richtung des Klicks verschoben. Dieser Wert ist in der Regel gleich der Länge des Schiebereglers.

Jede Bildlaufleiste hat einen Wert, der angibt, wie weit der Schieberegler vom Anfang der Bildlaufleiste entfernt ist; dieser Wert wird mit value() ermittelt und mit setValue() eingestellt. Dieser Wert liegt immer innerhalb des für die Bildlaufleiste definierten Wertebereichs, von minimum() bis einschließlich maximum(). Der Bereich der zulässigen Werte kann mit setMinimum() und setMaximum() eingestellt werden. Beim Minimalwert befindet sich der obere Rand des Schiebereglers (bei einer vertikalen Bildlaufleiste) bzw. der linke Rand (bei einer horizontalen Bildlaufleiste) am oberen (oder linken) Ende der Bildlaufleiste. Beim Maximalwert befindet sich der untere (oder rechte) Rand des Schiebereglers am unteren (oder rechten) Ende der Bildlaufleiste.

Die Länge des Schiebereglers ist in der Regel mit dem Wert des Seitenschritts verknüpft und stellt normalerweise den Anteil des Dokumentbereichs dar, der in einer Bildlaufansicht angezeigt wird. Der Seitenschritt ist der Betrag, um den sich der Wert ändert, wenn der Benutzer die Tasten Page Up und Page Down drückt, und wird mit setPageStep() festgelegt. Kleinere Änderungen des durch den Zeilenschritt definierten Wertes werden mit den Cursortasten vorgenommen, und diese Größe wird mit setSingleStep() eingestellt.

Beachten Sie, dass der verwendete Wertebereich unabhängig von der tatsächlichen Größe des Bildlaufleisten-Widgets ist. Sie brauchen dies nicht zu berücksichtigen, wenn Sie Werte für den Bereich und den Seitenschritt wählen.

Der für die Bildlaufleiste angegebene Wertebereich wird oft anders bestimmt als der für QSlider, da die Länge des Schiebereglers berücksichtigt werden muss. Wenn wir ein Dokument mit 100 Zeilen haben und nur 20 Zeilen in einem Widget anzeigen können, möchten wir vielleicht eine Bildlaufleiste mit einem Seitenschritt von 20, einem Mindestwert von 0 und einem Höchstwert von 80 konstruieren. Dies würde eine Bildlaufleiste mit fünf "Seiten" ergeben.

Die Beziehung zwischen der Länge des Dokuments, dem Wertebereich der Bildlaufleiste und dem Seitenschritt ist in vielen gängigen Situationen einfach. Der Wertebereich der Bildlaufleiste wird bestimmt, indem ein gewählter Seitenschritt von einem Wert subtrahiert wird, der die Länge des Dokuments darstellt. In solchen Fällen ist die folgende Gleichung nützlich: document length = maximum() - minimum() + pageStep().

QScrollBar bietet nur ganzzahlige Bereiche. Beachten Sie, dass QScrollBar zwar mit sehr großen Zahlen umgehen kann, aber Scrollbars auf aktuellen Bildschirmen keine Bereiche über 100.000 Pixel sinnvoll darstellen können. Darüber hinaus wird es für den Benutzer schwierig, den Schieberegler entweder mit der Tastatur oder der Maus zu steuern, und die Bildlaufpfeile sind nur begrenzt nützlich.

ScrollBar erbt einen umfassenden Satz von Signalen von QAbstractSlider:

  • valueChanged() wird ausgegeben, wenn sich der Wert des Schiebereglers geändert hat. Die Funktion tracking() bestimmt, ob dieses Signal während der Benutzerinteraktion ausgegeben wird.
  • rangeChanged() wird ausgegeben, wenn sich der Wertebereich der Bildlaufleiste geändert hat.
  • sliderPressed() wird ausgegeben, wenn der Benutzer beginnt, den Schieberegler zu ziehen.
  • sliderMoved() wird ausgegeben, wenn der Benutzer den Schieberegler zieht.
  • sliderReleased() wird ausgegeben, wenn der Benutzer den Schieberegler loslässt.
  • actionTriggered() wird ausgegeben, wenn die Bildlaufleiste durch Benutzerinteraktion oder über die Funktion triggerAction() geändert wird.

Ein Rollbalken kann über die Tastatur gesteuert werden, hat aber eine Standard focusPolicy() von Qt::NoFocus. Verwenden Sie setFocusPolicy(), um die Tastaturinteraktion mit dem Rollbalken zu aktivieren:

  • Links/Rechts verschiebt eine horizontale Bildlaufleiste um einen Schritt.
  • Nach oben/unten verschiebt eine vertikale Bildlaufleiste um einen Schritt.
  • PageUp bewegt sich eine Seite nach oben.
  • PageDown bewegt sich eine Seite nach unten.
  • Home bewegt sich an den Anfang (Minimum).
  • Ende bewegt sich zum Ende (Maximum).

Der Schieberegler selbst kann mit der Funktion triggerAction() gesteuert werden, um die Benutzerinteraktion mit den Steuerelementen der Bildlaufleiste zu simulieren. Dies ist nützlich, wenn Sie viele verschiedene Widgets haben, die einen gemeinsamen Wertebereich verwenden.

Die meisten GUI-Stile verwenden den Wert pageStep(), um die Größe des Schiebereglers zu berechnen.

Siehe auch QScrollArea, QSlider, QDial, QSpinBox, und Sliders Example.

Dokumentation der Mitgliedsfunktionen

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

Konstruiert eine vertikale Bildlaufleiste.

Das Argument parent wird an den Konstruktor QWidget gesendet.

Der Standardwert für minimum ist 0, für maximum 99, mit einer singleStep Größe von 1 und einer pageStep Größe von 10 und einer anfänglichen value von 0.

[explicit] QScrollBar::QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr)

Konstruiert eine Bildlaufleiste mit dem angegebenen orientation.

Das Argument parent wird an den QWidget Konstruktor übergeben.

Der Standardwert für minimum ist 0, für maximum 99, mit einer singleStep Größe von 1 und einer pageStep Größe von 10, und einem anfänglichen value von 0.

[virtual noexcept] QScrollBar::~QScrollBar()

Zerstört die Bildlaufleiste.

[override virtual protected] void QScrollBar::contextMenuEvent(QContextMenuEvent *event)

Reimplements: QWidget::contextMenuEvent(QContextMenuEvent *event).

[override virtual] bool QScrollBar::event(QEvent *event)

Reimplements: QAbstractSlider::event(QEvent *e).

[override virtual protected] void QScrollBar::hideEvent(QHideEvent *)

Reimplements: QWidget::hideEvent(QHideEvent *event).

[virtual protected] void QScrollBar::initStyleOption(QStyleOptionSlider *option) const

Initialisieren Sie option mit den Werten aus dieser QScrollBar. Diese Methode ist nützlich für Unterklassen, wenn sie eine QStyleOptionSlider benötigen, aber nicht alle Informationen selbst eingeben wollen.

Siehe auch QStyleOption::initFrom().

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

Reimplements: QWidget::mouseMoveEvent(QMouseEvent *event).

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

Reimplements: QWidget::mousePressEvent(QMouseEvent *event).

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

Reimplements: QWidget::mouseReleaseEvent(QMouseEvent *event).

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

Reimplements: QWidget::paintEvent(QPaintEvent *event).

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

Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QWidget::sizeHint.

[override virtual protected] void QScrollBar::sliderChange(QAbstractSlider::SliderChange change)

Reimplements: QAbstractSlider::sliderChange(QAbstractSlider::SliderChange change).

[override virtual protected] void QScrollBar::wheelEvent(QWheelEvent *event)

Reimplements: QAbstractSlider::wheelEvent(QWheelEvent *e).

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