QScrollBar类
QScrollBar控件提供了一个垂直或水平滚动条。 更多信息...
头文件 | #include <QScrollBar> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承 | QAbstractSlider |
公共函数
QScrollBar(QWidget *parent = nullptr) | |
QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr) | |
virtual | ~QScrollBar() |
重实现的公共函数
保护函数
virtual void | initStyleOption(QStyleOptionSlider *option) const |
重实现的保护函数
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 |
详细描述
滚动条是一种控件,它使用户能够访问比用于显示它的控件更大的文档的部分。它提供了用户在文档中当前位置以及可见文档量的视觉指示。滚动条通常配备其他控件,以便更精确地导航。Qt以适合每个平台的方式显示滚动条。
如果您需要为另一个小部件提供滚动视图,使用QScrollArea类可能更加方便,因为此类提供了一个视图小部件和滚动条。当您需要使用QAbstractScrollArea实现类似功能,并对专用小部件进行操作时,QScrollBar非常有用;例如,如果您决定子类化QAbstractItemView。对于大多数其他需要使用滑动控件在给定范围内获取值的场景,QSlider类可能更适合您的需求。
滚动条通常包含四个独立控件:滑块、滚动箭头和页面控件。
|
每个滚动条都有一个值,指示滑块与滚动条起始位置的距离;这可以通过value() 获取,并通过setValue() 设置。此值始终位于为滚动条定义的值范围之内,从 minimum() 到 maximum() 包含。可接受值的范围可以通过 setMinimum() 和 setMaximum() 设置。在最小值时,滑块的上边缘(对于垂直滚动条)或左边缘(对于水平滚动条)将在滚动条的最高(或左)端。在最大值时,滑块的底部(或右)边缘将在滚动条的最低(或右)端。
滑块的长度通常与页面步长值相关,通常代表在滚动视图中显示的文档区域的比例。页面步长是当用户按下Page Up和Page 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()值来计算滑块的大小。
另请参阅QScrollArea、QSlider、QDial、QSpinBox和滑动条示例。
成员函数文档
[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 公司的商标。所有其他商标均为各自所有者的财产。