QScrollBar Class
Das QScrollBar-Widget stellt eine vertikale oder horizontale Bildlaufleiste bereit. Mehr...
| Überschrift: | #include <QScrollBar> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Erbt: | QAbstractSlider |
Öffentliche Funktionen
| QScrollBar(QWidget *parent = nullptr) | |
| QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr) | |
| virtual | ~QScrollBar() |
(since 6.10) QMenu * | createStandardContextMenu(QPoint position) |
Neu implementierte öffentliche Funktionen
Geschützte Funktionen
| virtual void | initStyleOption(QStyleOptionSlider *option) const |
Neu implementierte 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 |
Ausführliche Beschreibung
Eine Bildlaufleiste ist ein Steuerelement, das es dem Benutzer ermöglicht, auf Teile eines Dokuments zuzugreifen, das größer ist als das zur Anzeige verwendete Widget. Sie zeigt visuell die aktuelle Position des Benutzers innerhalb des Dokuments sowie den sichtbaren Bereich des Dokuments an. Bildlaufleisten sind in der Regel mit weiteren Steuerelementen ausgestattet, die eine präzisere Navigation ermöglichen. Qt zeigt Bildlaufleisten in einer für die jeweilige Plattform geeigneten Weise an.
Wenn Sie eine scrollbare Ansicht in einem anderen Widget bereitstellen müssen, ist es möglicherweise praktischer, die Klasse „ QScrollArea “ zu verwenden, da diese ein Viewport-Widget und Bildlaufleisten bereitstellt. „QScrollBar“ ist nützlich, wenn Sie ähnliche Funktionalität für spezialisierte Widgets mithilfe von „ QAbstractScrollArea “ implementieren müssen; beispielsweise, wenn Sie beschließen, eine Unterklasse von „ QAbstractItemView “ zu erstellen. Für die meisten anderen Situationen, in denen ein Schieberegler verwendet wird, um einen Wert innerhalb eines bestimmten Bereichs zu ermitteln, ist die Klasse „ QSlider “ möglicherweise besser für Ihre Anforderungen geeignet.
| Bildlaufleisten umfassen in der Regel vier separate Steuerelemente: einen Schieberegler, Bildlaufpfeile und ein Seitensteuerelement.
|
Jede Bildlaufleiste verfügt über einen Wert, der angibt, wie weit der Schieberegler vom Anfang der Bildlaufleiste entfernt ist; dieser wird mit ` value()` abgerufen und mit ` setValue()` gesetzt. Dieser Wert liegt immer innerhalb des für die Bildlaufleiste definierten Wertebereichs, von ` minimum()` bis einschließlich ` maximum()`. Der Bereich zulässiger Werte kann mit ` setMinimum()` und ` setMaximum()` festgelegt werden. Beim Minimalwert befindet sich die Oberkante des Schiebereglers (bei einer vertikalen Bildlaufleiste) bzw. die linke Kante (bei einer horizontalen Bildlaufleiste) am oberen (bzw. linken) Ende der Bildlaufleiste. Beim Maximalwert befindet sich die untere (bzw. rechte) Kante des Schiebereglers am unteren (bzw. rechten) Ende der Bildlaufleiste.
Die Länge des Schiebereglers hängt in der Regel vom Wert des Seitenschritts ab und stellt typischerweise 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 Werts erfolgen über die Cursortasten, und dieser Wert wird mit ` setSingleStep()` festgelegt.
Beachten Sie, dass der verwendete Wertebereich unabhängig von der tatsächlichen Größe des Bildlaufleisten-Widgets ist. Sie müssen dies bei der Auswahl der Werte für den Wertebereich und den Seitenschritt nicht berücksichtigen.
Der für die Bildlaufleiste festgelegte Wertebereich wird oft anders bestimmt als der für ein „ QSlider “, da die Länge des Schiebereglers berücksichtigt werden muss. Wenn wir ein Dokument mit 100 Zeilen haben und in einem Widget nur 20 Zeilen anzeigen können, möchten wir möglicherweise eine Bildlaufleiste mit einem Seitenschritt von 20, einem Minimalwert von 0 und einem Maximalwert von 80 erstellen. Dies würde uns eine Bildlaufleiste mit fünf „Seiten“ ergeben.
![]() | Der Zusammenhang zwischen der Dokumentlänge, dem in einer Bildlaufleiste verwendeten Wertebereich und der Seitenschrittgröße ist in vielen gängigen Situationen einfach. Der Wertebereich der Bildlaufleiste wird bestimmt, indem ein gewählter Seitenschritt von einem Wert abgezogen wird, der die Länge des Dokuments darstellt. In solchen Fällen ist die folgende Gleichung hilfreich: Dokumentlänge = maximum() – minimum() + pageStep(). |
QScrollBar stellt nur ganzzahlige Bereiche zur Verfügung. Beachten Sie, dass QScrollBar zwar sehr große Zahlen verarbeitet, Scrollbalken auf aktuellen Bildschirmen jedoch Bereiche über etwa 100.000 Pixel nicht sinnvoll darstellen können. Darüber hinaus wird es für den Benutzer schwierig, den Schieberegler entweder über die Tastatur oder die Maus zu steuern, und die Scrollpfeile sind nur noch eingeschränkt nutzbar.
ScrollBar erbt einen umfassenden Satz von Signalen von „ QAbstractSlider “:
- valueChanged() wird ausgelöst, wenn sich der Wert der Bildlaufleiste geändert hat. Die Eigenschaft ` tracking ` legt fest, ob dieses Signal bei Benutzerinteraktion ausgelöst wird.
- rangeChanged() wird ausgelöst, wenn sich der Wertebereich der Bildlaufleiste geändert hat.
- sliderPressed() wird ausgelöst, wenn der Benutzer beginnt, den Schieberegler zu ziehen.
- sliderMoved() wird ausgelöst, wenn der Benutzer den Schieberegler zieht.
- sliderReleased() wird ausgelöst, wenn der Benutzer den Schieberegler loslässt.
- actionTriggered() wird ausgelöst, wenn die Bildlaufleiste durch eine Benutzerinteraktion oder über die Funktion „ triggerAction “ () geändert wird.
Eine Bildlaufleiste kann über die Tastatur gesteuert werden, hat jedoch standardmäßig den Wert „ Qt::NoFocus “ für „ focusPolicy()“. Verwenden Sie „ setFocusPolicy()“, um die Interaktion mit der Bildlaufleiste über die Tastatur zu aktivieren:
- „Left/Right“ verschieben eine horizontale Bildlaufleiste um einen einzelnen Schritt.
- Mit den Tasten „Auf“ und „Ab“ wird eine vertikale Bildlaufleiste um einen Schritt verschoben.
- „PageUp“ bewegt eine Seite nach oben.
- „PageDown“ blättert eine Seite nach unten.
- „Home“ springt zum Anfang (Minimum).
- „End“ springt zum Ende (Maximum).
Der Schieberegler selbst kann mithilfe 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 von ` pageStep()` zur Berechnung der Größe des Schiebereglers.
Siehe auch „ QScrollArea“ , „ QSlider “, „ QDial “, „ QSpinBox “ und „Beispiel für Schieberegler“.
Dokumentation zu den Member-Funktionen
[explicit] QScrollBar::QScrollBar(QWidget *parent = nullptr)
Erstellt eine vertikale Bildlaufleiste.
Das Argument „ parent “ wird an den Konstruktor von „ QWidget “ übergeben.
Der Wert von „ minimum “ ist standardmäßig 0, der von „ maximum “ 99, wobei die Größe von „ singleStep “ 1 und die von „ pageStep “ 10 beträgt und der anfängliche Wert von „ value “ 0 ist.
[explicit] QScrollBar::QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr)
Erstellt eine Bildlaufleiste mit dem angegebenen ` orientation`.
Das Argument „ parent “ wird an den Konstruktor von „ QWidget “ übergeben.
Der Standardwert für „ minimum “ ist 0, der für „ maximum “ 99, wobei die Größe von „ singleStep “ 1 und die von „ pageStep “ 10 beträgt und der anfängliche Wert von „ value “ 0 ist.
[virtual noexcept] QScrollBar::~QScrollBar()
Entfernt die Bildlaufleiste.
[override virtual protected] void QScrollBar::contextMenuEvent(QContextMenuEvent *event)
Implementiert: ` QWidget::contextMenuEvent(QContextMenuEvent *event)`.
Zeigt das mit ` createStandardContextMenu()` erstellte Standard-Kontextmenü an.
Wenn Sie nicht möchten, dass die Bildlaufleiste über ein Kontextmenü verfügt, können Sie deren ` contextMenuPolicy ` auf ` Qt::NoContextMenu` setzen. Ein Stil kann dieses Verhalten auch mithilfe des Hinweises `SH_ScrollBar_ContextMenu` steuern.
Wenn Sie das Kontextmenü anpassen möchten, implementieren Sie diese Funktion neu. Wenn Sie das Standard-Kontextmenü erweitern möchten, implementieren Sie diese Funktion neu, rufen Sie ` createStandardContextMenu()` auf und erweitern Sie das zurückgegebene Menü. Speichern Sie entweder das zurückgegebene ` QMenu ` zur späteren Wiederverwendung oder setzen Sie das Attribut `WA_DeleteOnClose`.
Informationen zum Ereignis werden im Objekt ` event ` übergeben.
[since 6.10] QMenu *QScrollBar::createStandardContextMenu(QPoint position)
Erstellt das Standard-Kontextmenü, das angezeigt wird, wenn der Benutzer mit der rechten Maustaste auf die Bildlaufleiste klickt. Die Funktion wird vom Standard- contextMenuEvent()-Handler aufgerufen und nimmt als Parameter die Koordinaten ` position ` entgegen, an denen der Mausklick in den lokalen Koordinaten dieses Widgets erfolgte. Die Eigentumsrechte am Popup-Menü werden auf den Aufrufer übertragen.
Diese Funktion wurde in Qt 6.10 eingeführt.
[override virtual] bool QScrollBar::event(QEvent *event)
Umsetzt: ` QAbstractSlider::event(QEvent *e)`.
[override virtual protected] void QScrollBar::hideEvent(QHideEvent *)
Implementiert: ` QWidget::hideEvent(QHideEvent *event)`.
[virtual protected] void QScrollBar::initStyleOption(QStyleOptionSlider *option) const
Initialisieren Sie ` option ` mit den Werten aus dieser Datei: QScrollBar. Diese Methode ist für Unterklassen nützlich, wenn diese ein ` QStyleOptionSlider` benötigen, aber nicht alle Informationen selbst eingeben möchten.
Siehe auch ` QStyleOption::initFrom()`.
[override virtual protected] void QScrollBar::mouseMoveEvent(QMouseEvent *e)
Implementiert: ` QWidget::mouseMoveEvent(QMouseEvent *event)`.
[override virtual protected] void QScrollBar::mousePressEvent(QMouseEvent *e)
Implementiert: ` QWidget::mousePressEvent` (`QMouseEvent *event`).
[override virtual protected] void QScrollBar::mouseReleaseEvent(QMouseEvent *e)
Implementiert: ` QWidget::mouseReleaseEvent` (QMouseEvent *event).
[override virtual protected] void QScrollBar::paintEvent(QPaintEvent *)
Umsetzt: QWidget::paintEvent(QPaintEvent *event).
[override virtual] QSize QScrollBar::sizeHint() const
Implementiert eine Zugriffsfunktion für die Eigenschaft „ QWidget::sizeHint “ neu.
[override virtual protected] void QScrollBar::sliderChange(QAbstractSlider::SliderChange change)
Implementiert erneut: ` QAbstractSlider::sliderChange` (`QAbstractSlider::SliderChange change`).
[override virtual protected] void QScrollBar::wheelEvent(QWheelEvent *event)
Umsetzt: QAbstractSlider::wheelEvent(QWheelEvent *e).
© 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.

