QScrollBar类

QScrollBar控件提供了一个垂直或水平滚动条。 更多信息...

头文件 #include <QScrollBar>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QAbstractSlider

公共函数

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

重实现的公共函数

virtual boolevent(QEvent *event) override
virtual QSizesizeHint() const override

保护函数

virtual voidinitStyleOption(QStyleOptionSlider *option) const

重实现的保护函数

virtual voidcontextMenuEvent(QContextMenuEvent *event) override
virtual voidhideEvent(QHideEvent *) override
virtual voidmouseMoveEvent(QMouseEvent *e) override
virtual voidmousePressEvent(QMouseEvent *e) override
virtual voidmouseReleaseEvent(QMouseEvent *e) override
virtual voidpaintEvent(QPaintEvent *) override
virtual voidsliderChange(QAbstractSlider::SliderChange change) override
virtual voidwheelEvent(QWheelEvent *event) override

详细描述

滚动条是一种控件,它使用户能够访问比用于显示它的控件更大的文档的部分。它提供了用户在文档中当前位置以及可见文档量的视觉指示。滚动条通常配备其他控件,以便更精确地导航。Qt以适合每个平台的方式显示滚动条。

如果您需要为另一个小部件提供滚动视图,使用QScrollArea类可能更加方便,因为此类提供了一个视图小部件和滚动条。当您需要使用QAbstractScrollArea实现类似功能,并对专用小部件进行操作时,QScrollBar非常有用;例如,如果您决定子类化QAbstractItemView。对于大多数其他需要使用滑动控件在给定范围内获取值的场景,QSlider类可能更适合您的需求。

滚动条通常包含四个独立控件:滑块、滚动箭头和页面控件。
  • a. 滑块提供快速跳转到文档任何部分的途径,但不支持在大文档内部进行精确导航。
  • b. 滚动箭头是可按按钮,可用于精确导航到文档中的特定位置。对于连接到文本编辑器的垂直滚动条,这些通常会将当前位置向上或向下移动一行,并按小量调整滑块的位置。在编辑器和列表框中,“一行”可能代表一行文本;在图像查看器中可能代表20像素。
  • c. 页面控件是滑块被拖动的区域(滚动条的背景)。在这里单击会将滚动条向单击位置移动一个“页面”。此值通常与滑块的长度相同。

每个滚动条都有一个值,指示滑块与滚动条起始位置的距离;这可以通过value() 获取,并通过setValue() 设置。此值始终位于为滚动条定义的值范围之内,从 minimum() 到 maximum() 包含。可接受值的范围可以通过 setMinimum() 和 setMaximum() 设置。在最小值时,滑块的上边缘(对于垂直滚动条)或左边缘(对于水平滚动条)将在滚动条的最高(或左)端。在最大值时,滑块的底部(或右)边缘将在滚动条的最低(或右)端。

滑块的长度通常与页面步长值相关,通常代表在滚动视图中显示的文档区域的比例。页面步长是当用户按下Page UpPage Down键时,值变化的数量,并通过setPageStep() 设置。使用光标键进行的对值定义的行步长的较小更改是通过setSingleStep() 设置的。

请注意,所使用的值的范围独立于滚动条小部件的实际大小。在为范围和页面步长选择值时,您无需考虑这一点。

为滚动条指定的值范围通常与QSlider不同,因为需要考虑滑块的长度。如果有一个包含100行的文档,并且我们只能在一个小部件中显示20行,我们可能希望构造一个页面步长为20、最小值为0、最大值为80的滚动条。这将给出具有五个“页面”的滚动条。

在许多常见情况下,文档长度与滚动条中使用的值范围以及页面步长之间的关系非常简单。滚动条的值范围是通过从表示文档长度的某个值中减去选定的页面步长来确定的。在这种情况下,以下方程式很有用:文档长度 = maximum() - minimum() + pageStep()。

QScrollBar只提供整数范围。请注意,尽管QScrollBar可以处理非常大的数字,但当前屏幕上的滚动条无法有效地表示超过大约100,000像素的范围。超过这一点,用户很难使用键盘或鼠标控制滑块,滚动箭头也将有限制。

ScrollBar从QAbstractSlider继承了信号集。

  • valueChanged()方法在滚动条的值发生变化时触发。tracking()方法用于判断该信号是否在用户交互期间发出。
  • rangeChanged()方法在滚动条的值范围发生变化时触发。
  • sliderPressed()方法在用户开始拖动滚动条时触发。
  • sliderMoved()方法在用户拖动滚动条时触发。
  • sliderReleased()方法在用户释放滚动条时触发。
  • actionTriggered()方法在用户交互或通过triggerAction()函数改变滚动条时触发。

滚动条可以通过键盘控制,但它具有默认的focusPolicy()值为Qt::NoFocus。使用setFocusPolicy()来启用与滚动条的键盘交互。

  • 左右键移动水平滚动条一个步长。
  • 上下键移动垂直滚动条一个步长。
  • PageUp向上一页。
  • PageDown向下一页。
  • Home移至开始(最小值)。
  • End移至结束(最大值)。

可以使用triggerAction()函数来使用户与滚动条控件交互,以控制滑块本身。这在您有许多不同小部件且使用公共值范围时非常有用。

大多数GUI样式使用pageStep()值来计算滑块的大小。

另请参阅QScrollAreaQSliderQDialQSpinBox滑动条示例

成员函数文档

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

构造一个垂直滚动条。

parent参数传递给QWidget构造函数。

minimum默认为0,maximum默认为99,singleStep大小为1,pageStep大小为10,初始value为0。

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

根据给定的orientation构造滚动条。

parent参数传递给QWidget构造函数。

minimum默认为0,maximum默认为99,singleStep大小为1,pageStep大小为10,初始value为0。

[virtual noexcept] QScrollBar::~QScrollBar()

销毁滚动条。

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

重实: QWidget::contextMenuEvent(QContextMenuEvent *event).

[覆盖虚函数] bool QScrollBar::event(QEvent *event)

重新实现: QAbstractSlider::event(QEvent *e).

[覆盖虚保护] void QScrollBar::hideEvent(QHideEvent *)

重新实现:QWidget::hideEvent(QHideEvent *event).

[虚保护] void QScrollBar::initStyleOption(QStyleOptionSlider *option) const

使用此 QScrollBar 的值初始化 option。当子类需要 QStyleOptionSlider 但不希望自己填写所有信息时,此方法非常有用。

另请参阅 QStyleOption::initFrom().

[覆盖虚保护] void QScrollBar::mouseMoveEvent(QMouseEvent *e)

重新实现:QWidget::mouseMoveEvent(QMouseEvent *event).

[覆盖虚保护] void QScrollBar::mousePressEvent(QMouseEvent *e)

重新实现:QWidget::mousePressEvent(QMouseEvent *event).

[覆盖虚保护] void QScrollBar::mouseReleaseEvent(QMouseEvent *e)

重新实现:QWidget::mouseReleaseEvent(QMouseEvent *event).

[覆盖虚保护] void QScrollBar::paintEvent(QPaintEvent *)

重新实现:QWidget::paintEvent(QPaintEvent *event).

[覆盖虚函数] QSize QScrollBar::sizeHint() const

重新实现属性访问函数: QWidget::sizeHint.

[覆盖虚保护] void QScrollBar::sliderChange(QAbstractSlider::SliderChange change)

重新实现:QAbstractSlider::sliderChange(QAbstractSlider::SliderChange change).

[覆盖虚保护] void QScrollBar::wheelEvent(QWheelEvent *event)

重新实现:QAbstractSlider::wheelEvent(QWheelEvent *e).

© 2024 Qt 公司版权所有。此处包含的文档贡献属于其各自所有者。此处提供的文档是根据自由软件基金会发布并由其授权的 GNU 自由文档许可证版本 1.3 的条款提供的。Qt 和相关标志是芬兰以及/或全世界 Qt 公司的商标。所有其他商标均为各自所有者的财产。