本页内容

QAbstractSlider Class

QAbstractSlider 类提供了一个处于特定范围内的整数值。更多内容...

头文件: #include <QAbstractSlider>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承自: QWidget
继承自:

QDial、QScrollBar 以及QSlider

公共类型

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 等控件的通用父类。

该类的首要属性如下:

  1. value:QAbstractSlider维护的有界整数。
  2. minimum:可能的最小值。
  3. maximum:可能的最高值。
  4. singleStep:抽象滑块提供的两个自然步长中较小的那个,通常对应用户按下方向键的操作。
  5. pageStep: 抽象滑块提供的两个自然步长中较大的那个,通常对应用户按下 PageUp 或 PageDown 键。
  6. tracking: 是否启用滑块跟踪功能。
  7. 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::SliderNoAction0
QAbstractSlider::SliderSingleStepAdd1
QAbstractSlider::SliderSingleStepSub2
QAbstractSlider::SliderPageStepAdd3
QAbstractSlider::SliderPageStepSub4
QAbstractSlider::SliderToMinimum5
QAbstractSlider::SliderToMaximum6
QAbstractSlider::SliderMove7

enum QAbstractSlider::SliderChange

常数值
QAbstractSlider::SliderRangeChange0
QAbstractSlider::SliderOrientationChange1
QAbstractSlider::SliderStepsChange2
QAbstractSlider::SliderValueChange3

属性文档

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 表示新的最大值。

另请参阅 minimum 和maximum 。

[protected] QAbstractSlider::SliderAction QAbstractSlider::repeatAction() const

返回当前的重复操作。

另请参阅 setRepeatAction()。

[slot] void QAbstractSlider::setRange(int min, int max)

将滑块的最小值设置为min ,最大值设置为max 。

如果max 小于min ,则min 成为唯一的有效值。

另请参阅 minimum 和maximum 。

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