QAbstractSlider Class
QAbstractSlider 类提供了一个处于特定范围内的整数值。更多内容...
| 头文件: | #include <QAbstractSlider> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 继承自: | QWidget |
| 继承自: |
公共类型
| enum | SliderAction { SliderNoAction, SliderSingleStepAdd, SliderSingleStepSub, SliderPageStepAdd, SliderPageStepSub, …, SliderMove } |
属性
|
|
公共函数
| QAbstractSlider(QWidget *parent = nullptr) | |
| virtual | ~QAbstractSlider() |
| bool | hasTracking() const |
| bool | invertedAppearance() const |
| bool | invertedControls() const |
| bool | isSliderDown() const |
| int | maximum() const |
| int | minimum() const |
| Qt::Orientation | orientation() const |
| int | pageStep() const |
| void | setInvertedAppearance(bool) |
| void | setInvertedControls(bool) |
| void | setMaximum(int) |
| void | setMinimum(int) |
| void | setPageStep(int) |
| void | setSingleStep(int) |
| void | setSliderDown(bool) |
| void | setSliderPosition(int) |
| void | setTracking(bool enable) |
| int | singleStep() const |
| int | sliderPosition() const |
| void | triggerAction(QAbstractSlider::SliderAction action) |
| int | value() const |
公共槽位
| void | setOrientation(Qt::Orientation) |
| void | setRange(int min, int max) |
| void | setValue(int) |
信号
| void | actionTriggered(int action) |
| void | rangeChanged(int min, int max) |
| void | sliderMoved(int value) |
| void | sliderPressed() |
| void | sliderReleased() |
| void | valueChanged(int value) |
受保护类型
| enum | SliderChange { SliderRangeChange, SliderOrientationChange, SliderStepsChange, SliderValueChange } |
受保护函数
| QAbstractSlider::SliderAction | repeatAction() const |
| void | setRepeatAction(QAbstractSlider::SliderAction action, int thresholdTime = 500, int repeatTime = 50) |
| virtual void | sliderChange(QAbstractSlider::SliderChange change) |
重新实现的受保护函数
| virtual void | changeEvent(QEvent *ev) override |
| virtual bool | event(QEvent *e) override |
| virtual void | keyPressEvent(QKeyEvent *ev) override |
| virtual void | timerEvent(QTimerEvent *e) override |
| virtual void | wheelEvent(QWheelEvent *e) override |
详细说明
该类被设计为QScrollBar 、QSlider 和QDial 等控件的通用父类。
该类的首要属性如下:
- value:QAbstractSlider维护的有界整数。
- minimum:可能的最小值。
- maximum:可能的最高值。
- singleStep:抽象滑块提供的两个自然步长中较小的那个,通常对应用户按下方向键的操作。
- pageStep: 抽象滑块提供的两个自然步长中较大的那个,通常对应用户按下 PageUp 或 PageDown 键。
- tracking: 是否启用滑块跟踪功能。
- sliderPosition: 滑块的当前位置。如果启用了“tracking ”(默认设置),则此值与 `value` 相同。
Unity (1) 可视为第三种步长。setValue() 允许您将当前值设置为允许范围内的任意整数,而不仅仅是minimum() +n*singleStep()(其中n 为整数)。某些控件可能允许用户设置任意值;而另一些控件可能仅提供singleStep() 或pageStep() 的倍数。
QAbstractSlider 会发出一组全面的信号:
| 信号 | 在以下情况下发出 |
|---|---|
| valueChanged() | 值发生变化时。tracking 决定在用户交互期间是否发出此信号。 |
| sliderPressed() | 用户开始拖动滑块时。 |
| sliderMoved() | 用户正在拖动滑块。 |
| sliderReleased() | 用户松开滑块。 |
| actionTriggered() | 触发了滑块操作。 |
| rangeChanged() | a 范围已发生变化。 |
QAbstractSlider 提供了一个虚拟函数sliderChange(),非常适合用于更新滑块在屏幕上的显示效果。通过调用triggerAction(),子类可以触发滑块操作。两个辅助函数QStyle::sliderPositionFromValue() 和QStyle::sliderValueFromPosition() 有助于子类和样式将屏幕坐标映射到逻辑范围值。
另请参阅 QAbstractSpinBox 、QSlider 、QDial 、QScrollBar 以及“滑块示例”。
成员类型文档
enum QAbstractSlider::SliderAction
| 常数 | 值 |
|---|---|
QAbstractSlider::SliderNoAction | 0 |
QAbstractSlider::SliderSingleStepAdd | 1 |
QAbstractSlider::SliderSingleStepSub | 2 |
QAbstractSlider::SliderPageStepAdd | 3 |
QAbstractSlider::SliderPageStepSub | 4 |
QAbstractSlider::SliderToMinimum | 5 |
QAbstractSlider::SliderToMaximum | 6 |
QAbstractSlider::SliderMove | 7 |
enum QAbstractSlider::SliderChange
| 常数 | 值 |
|---|---|
QAbstractSlider::SliderRangeChange | 0 |
QAbstractSlider::SliderOrientationChange | 1 |
QAbstractSlider::SliderStepsChange | 2 |
QAbstractSlider::SliderValueChange | 3 |
属性文档
invertedAppearance : bool
该属性控制滑块是否以倒序显示数值。
如果此属性设置为“false ”(默认值),则继承自父控件的最小值和最大值将显示在经典位置。如果该值为 true,则最小值和最大值将显示在相反的位置。
注意:此属性对滑块和旋钮最为适用。对于滚动条,其子控件的视觉效果取决于样式是否支持倒置显示;大多数样式在滚动条上会忽略此属性。
访问函数:
| bool | invertedAppearance() const |
| void | setInvertedAppearance(bool) |
invertedControls : bool
该属性控制滑块是否反转鼠标滚轮和键盘事件。
如果该属性设置为false ,则向上滚动鼠标滚轮或使用“Page Up”等键会使滑块的数值朝最大值方向增加。否则,按下“Page Up”键会使数值朝滑块的最小值方向移动。
访问函数:
| bool | invertedControls() const |
| void | setInvertedControls(bool) |
maximum : int
该属性存储滑块的最大值
设置此属性时,系统会根据需要调整minimum ,以确保范围保持有效。此外,滑块的当前值也会被调整,使其位于新范围之内。
访问函数:
| int | maximum() const |
| void | setMaximum(int) |
minimum : int
该属性用于存储滑块的最小值
设置此属性时,系统会根据需要调整maximum ,以确保范围保持有效。此外,滑块的当前值也会被调整,使其处于新范围之内。
访问函数:
| int | minimum() const |
| void | setMinimum(int) |
orientation : Qt::Orientation
该属性用于存储滑块的方向
方向必须为Qt::Vertical (默认值)或Qt::Horizontal 。
访问函数:
| Qt::Orientation | orientation() const |
| void | setOrientation(Qt::Orientation) |
pageStep : int
该属性用于存储页面步长。
这是抽象滑块提供的两个自然步长中较大的一个,通常对应于用户按下 PageUp 或 PageDown 键的操作。
访问函数:
| int | pageStep() const |
| void | setPageStep(int) |
另请参阅 singleStep 。
singleStep : int
此属性表示单步操作。
这是抽象滑块提供的两个自然步长中较小的一个,通常对应用户按下方向键的操作。
如果在自动重复键事件期间修改了该属性,行为未定义。
访问函数:
| int | singleStep() const |
| void | setSingleStep(int) |
另请参阅 pageStep 。
sliderDown : bool
该属性用于标识滑块是否被按下。
子类会设置该属性,以便让抽象滑块知道“tracking ”是否会产生任何效果。
更改滑块的“down”属性会触发sliderPressed()和sliderReleased()信号。
访问函数:
| bool | isSliderDown() const |
| void | setSliderDown(bool) |
sliderPosition : int
该属性保存了当前滑块的位置
如果启用了tracking (默认启用),则此属性与value 完全相同。
访问函数:
| int | sliderPosition() const |
| void | setSliderPosition(int) |
通知信号:
| void | sliderMoved(int value) |
tracking : bool
该属性表示滑块跟踪功能是否已启用
如果启用了跟踪(默认设置),则在拖动滑块时,滑块会发出valueChanged()信号。如果禁用了跟踪,则滑块仅在用户松开滑块时才发出valueChanged()信号。
访问函数:
| bool | hasTracking() const |
| void | setTracking(bool enable) |
另请参阅 sliderDown 。
value : int
该属性存储滑块的当前值
滑块会强制将值限制在有效范围内:minimum <=value <=maximum 。
更改该值也会更改sliderPosition 。
访问函数:
| int | value() const |
| void | setValue(int) |
通知信号:
| void | valueChanged(int value) |
成员函数文档
[explicit] QAbstractSlider::QAbstractSlider(QWidget *parent = nullptr)
构建一个抽象的滑块。
parent 参数将被传递给QWidget 构造函数。
minimum 的默认值为 0,maximum 的默认值为 99,singleStep 的大小为 1,pageStep 的大小为 10,初始value 为 0。
[virtual noexcept] QAbstractSlider::~QAbstractSlider()
删除该滑块。
[signal] void QAbstractSlider::actionTriggered(int action)
当滑块操作action 被触发时,会发出此信号。相关操作包括:SliderSingleStepAdd 、SliderSingleStepSub 、SliderPageStepAdd 、SliderPageStepSub 、SliderToMinimum 、SliderToMaximum 以及SliderMove 。
当该信号被触发时,sliderPosition 已根据操作进行了调整,但value 尚未传播(即valueChanged()信号尚未被触发),且视觉显示尚未更新。 因此,在连接到此信号的插槽中,您可以根据操作和滑块的值,通过自行调用setSliderPosition() 安全地调整任何操作。
另请参阅 triggerAction()。
[override virtual protected] void QAbstractSlider::changeEvent(QEvent *ev)
重写了:QWidget::changeEvent(QEvent *event)。
[override virtual protected] bool QAbstractSlider::event(QEvent *e)
重写了:QWidget::event(QEvent *event)。
[override virtual protected] void QAbstractSlider::keyPressEvent(QKeyEvent *ev)
重写了:QWidget::keyPressEvent(QKeyEvent *event)。
[signal] void QAbstractSlider::rangeChanged(int min, int max)
当滑块范围发生变化时,会发出此信号,其中min 表示新的最小值,max 表示新的最大值。
[protected] QAbstractSlider::SliderAction QAbstractSlider::repeatAction() const
返回当前的重复操作。
另请参阅 setRepeatAction()。
[slot] void QAbstractSlider::setRange(int min, int max)
将滑块的最小值设置为min ,最大值设置为max 。
如果max 小于min ,则min 成为唯一的有效值。
[protected] void QAbstractSlider::setRepeatAction(QAbstractSlider::SliderAction action, int thresholdTime = 500, int repeatTime = 50)
将动作action 设置为在初始延迟thresholdTime 之后,以repeatTime 的间隔重复触发。
另请参阅 triggerAction() 和repeatAction()。
[virtual protected] void QAbstractSlider::sliderChange(QAbstractSlider::SliderChange change)
重写此虚拟函数,以跟踪滑块的变化,例如:SliderRangeChange 、SliderOrientationChange 、SliderStepsChange 或SliderValueChange 。默认实现仅更新显示效果,并忽略change 参数。
[signal] void QAbstractSlider::sliderMoved(int value)
当sliderDown 为true且滑块移动时,会触发此信号。这通常发生在用户拖动滑块时。value 表示滑块的新位置。
即使关闭了跟踪功能,该信号仍会发出。
注意: 这是属性sliderPosition的通知 信号。
另请参阅 setTracking()、valueChanged()、isSliderDown()、sliderPressed() 以及sliderReleased()。
[signal] void QAbstractSlider::sliderPressed()
当用户用鼠标点击滑块时,或通过调用setSliderDown(true) 进行程序化操作时,会触发此信号。
另请参阅 sliderReleased()、sliderMoved() 和isSliderDown()。
[signal] void QAbstractSlider::sliderReleased()
当用户使用鼠标松开滑块时,或通过调用setSliderDown(false)进行程序控制时,会触发此信号。
另请参阅 sliderPressed()、sliderMoved() 以及sliderDown 。
[override virtual protected] void QAbstractSlider::timerEvent(QTimerEvent *e)
重写了:QObject::timerEvent(QTimerEvent *event)。
void QAbstractSlider::triggerAction(QAbstractSlider::SliderAction action)
触发滑块action 。可执行的操作包括:SliderSingleStepAdd 、SliderSingleStepSub 、SliderPageStepAdd 、SliderPageStepSub 、SliderToMinimum 、SliderToMaximum 以及SliderMove 。
另请参阅 actionTriggered()。
[signal] void QAbstractSlider::valueChanged(int value)
当滑块值发生变化时,会触发此信号,并以新的滑块value 作为参数。
注意: 这是属性 `value`的通知器 信号。
[override virtual protected] void QAbstractSlider::wheelEvent(QWheelEvent *e)
重写了:QWidget::wheelEvent(QWheelEvent *event)。
© 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.