QAbstractSlider Class

QAbstractSlider 类提供了一个范围内的整数值。更多

Header: #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

详细说明

该类被设计为QScrollBarQSliderQDial 等部件的通用超类。

以下是该类的主要属性:

  1. value:QAbstractSlider 维护的有界整数。
  2. minimum:可能的最低值。
  3. maximum:可能的最高值。
  4. singleStep:抽象滑块提供的两个自然步骤中的较小步骤,通常相当于用户按下箭头键。
  5. pageStep:抽象滑块提供的两个自然级数中的较大级数,通常相当于用户按 PageUp 或 PageDown 键。
  6. tracking:是否启用滑块跟踪。
  7. sliderPosition:滑块的当前位置。如果启用tracking (默认),则与value 相同。

Unity (1) 可以看作是第三个步长。setValue() 可让您将当前值设置为允许范围内的任意整数,而不仅仅是n 的整数值minimum() +n*singleStep() 。有些窗口小部件可能允许用户设置任意值;其他窗口小部件可能只提供singleStep() 或pageStep() 的倍数。

QAbstractSlider 会发出一系列信号:

信号
valueChanged()值发生变化时发出的信号。tracking 决定是否在用户交互时发出该信号。
sliderPressed()用户开始拖动滑块。
sliderMoved()用户拖动滑块。
sliderReleased()用户释放滑块。
actionTriggered()触发了滑块操作。
rangeChanged()范围已更改。

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 (默认值),则最小值和最大值将显示在继承 widget 的经典位置。如果值为 true,则最小值和最大值将显示在相反的位置。

注意:该属性对滑块和转盘最有意义。对于滚动条,滚动条子控件的视觉效果取决于样式是否理解反转外观;对于滚动条,大多数样式都会忽略此属性。

访问功能

bool invertedAppearance() const
void setInvertedAppearance(bool)

invertedControls : bool

该属性用于确定滑块是否会反转滚轮和按键事件。

如果该属性为false ,则滚动鼠标滚轮 "向上 "和使用翻页键等按键将使滑块的值向最大值移动。否则,按向上翻页键将使滑块的值向最小值移动。

访问功能:

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 是否有任何作用。

更改滑块向下属性会发出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)

Notifier 信号:

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,SliderToMaximumSliderMove

信号发出时,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 为新的最大值。

另请参阅 minimummaximum

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

返回当前的重复操作。

另请参阅 setRepeatAction().

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

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

如果max 小于minmin 将成为唯一的合法值。

另请参阅 minimummaximum

[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,SliderStepsChangeSliderValueChange 。默认实现只更新显示,忽略change 参数。

[signal] void QAbstractSlider::sliderMoved(int value)

sliderDown 为真且滑块移动时,会发出该信号。这通常发生在用户拖动滑块时。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).

© 2025 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.