QAbstractSlider Class
QAbstractSlider类提供了一个范围内的整数值。
Header | #include < QAbstractSlider> |
---|---|
qmake | QT += widgets |
Inherits | QWidget |
Inherited By | QDial, QScrollBar, and QSlider |
详细说明
这个类被设计为QScrollBar、QSlider和QDial等小部件的通用超类。
下面是这个类的主要属性:
- value: QAbstractSlider维护的有界整数
- minimum:最小值
- maximum:可能的最大值
- singleStep:抽象滑块提供的两个自然步骤中较小的一个,通常对应于用户按下箭头键
- pageStep:抽象滑块提供的两个自然步骤中较大的一个,通常与用户按PageUp或PageDown相对应
- tracking:是否启用滑块跟踪
- sliderPosition:当前滑块的位置。如果启用了跟踪(默认值),这与value相同
可以将Unity(1)视为第三步长。。setValue()允许你将当前值设置为允许范围内的任何整数,而不仅仅是minimum() + n * singleStep()对于n的整数值。一些小部件可能允许用户设置任何值;其他的可能只提供singleStep()或pageStep()的倍数。
QAbstractSlider发出一组全面的信号:
Signal | Emitted when |
---|---|
valueChanged() | 值发生了变化。跟踪确定该信号是否在用户交互过程中发射。 |
sliderPressed() | 用户开始拖动滑块。 |
sliderMoved() | 用户拖动滑块。 |
sliderReleased() | 用户释放滑块。 |
actionTriggered() | 滑块动作被触发。 |
rangeChanged() | 范围改变了。 |
QAbstractSlider提供了一个sliderChange()虚函数,它非常适合更新滑块的屏幕表示。通过调用triggerAction(),子类触发滑块动作。两个助手函数QStyle::sliderPositionFromValue()和QStyle::sliderValueFromPosition()帮助子类和样式将屏幕坐标映射到逻辑范围值。
属性
-
invertedAppearance: bool 反转显示
注意:这个属性对于滑块和刻度盘最有意义。对于滚动条,滚动条子控件的视觉效果取决于样式是否理解反转外观;大多数样式忽略滚动条的这个属性Access functions:
- bool invertedAppearance() const
- void setInvertedAppearance(bool)
-
invertedControls: bool 滑块是否反转滚轮和键事件
如果该属性为false,滚动鼠标滚轮和使用page up这样的键将增加滑块的值到其最大值。否则,按page up将把value移动到滑块的最小值。Access functions:
- bool invertedControls() const
- void setInvertedControls(bool)
-
maximum: int 最大值
Access functions:
- int maximum() const
- void setMaximum(int)
-
minimum: int 最小值
Access functions:
- int minimum() const
- void setMinimum(int)
-
orientation: Qt::Orientation 滑块的方向
方向必须是Qt :: Vertical(默认)或Qt :: Horizontal。Access functions:
- Qt::Orientation orientation() const
- void setOrientation(Qt::Orientation)
-
pageStep: int 页面步数
抽象滑块提供的两个自然步骤中的较大者,通常对应于用户按PageUp或PageDown。Access functions:
- int pageStep() const
- void setPageStep(int)
-
singleStep: int 单个步数
抽象滑块提供的两个自然步骤中较小的一个,通常对应于用户按下箭头键。
如果在自动重复键事件期间修改了属性,则未定义行为。Access functions:
- int singleStep() const
- void setSingleStep(int)
-
sliderDown: bool 滑块是否被按下
该属性是由子类设置的,以便让抽象滑块知道跟踪是否有效果。
改变滑块向下属性会发出sliderPressed()和sliderrelease()信号。Access functions:
- bool isSliderDown() const
- void setSliderDown(bool)
-
sliderPosition: int 当前滑块的位置
如果启用了跟踪(默认值),这与value相同。Access functions:
- int sliderPosition() const
- void setSliderPosition(int)
Notifier signal:
- void sliderMoved(int value)
-
tracking: bool 是否启用滑块跟踪
如果跟踪是启用的(默认),滑块将在拖动滑块时发出valueChanged()信号。如果跟踪被禁用,滑块只在用户释放滑块时发出valueChanged()信号。Access functions:
- bool hasTracking() const
- void setTracking(bool enable)
-
value: int 滑块的当前值
滑块将强制该值在合法范围内:minimum <= value <= maximum。
改变值也会改变sliderPosition。Access functions:
- int value() const
- void setValue(int)
Notifier signal:
- void valueChanged(int value)
公共函数
构造析构
- QAbstractSlider(QWidget *parent = nullptr)
- virtual ~QAbstractSlider()
属性访问
- bool hasTracking() const
- void setTracking(bool enable)
- bool invertedAppearance() const
- void setInvertedAppearance(bool)
- bool invertedControls() const
- void setInvertedControls(bool)
- bool isSliderDown() const
- void setSliderDown(bool)
- int maximum() const
- void setMaximum(int)
- int minimum() const
- void setMinimum(int)
- int pageStep() const
- void setPageStep(int)
- int singleStep() const
- void setSingleStep(int)
- int sliderPosition() const
- void setSliderPosition(int)
- Qt::Orientation orientation() const
- int value() const
特殊
- void triggerAction(QAbstractSlider::SliderAction action) 触发滑块动作
可能的动作是SliderSingleStepAdd, SliderSingleStepSub, SliderPageStepAdd, SliderPageStepSub, sliderminimum, slidertommaximum和SliderMove。
公共槽
- void setOrientation(Qt::Orientation) 见属性
- void setValue(int) 见属性
- void setRange(int min, int max) 设置滑块的最小值和最大值
如果max小于min,则min成为唯一的合法值。
信号
-
void actionTriggered(int action) 当滑块动作动作被触发时,这个信号被发出
动作是SliderSingleStepAdd, SliderSingleStepSub, SliderPageStepAdd, SliderPageStepSub, sliderminimum, slidertommaximum和SliderMove。
当信号被发出时,sliderPosition已经根据动作进行了调整,但是值还没有被传播(意味着valueChanged()信号还没有被发出),视觉显示也没有被更新。因此,在连接到这个信号的插槽中,您可以根据动作和滑块的值自己调用setSliderPosition()安全地调整任何动作。
-
void rangeChanged(int min, int max)
-
void sliderMoved(int value) 当sliderDown为true并且滑块移动时,将发出此信号
这通常发生在用户拖动滑块时。这个值是新的滑块位置。
这个信号即使在跟踪关闭时也会发出。
注意:sliderPosition属性的通知器信号。 -
void sliderPressed() 当用户使用鼠标按下滑块时,或者调用setSliderDown(true)时,会发出这个信号
-
void sliderReleased() 当用户使用鼠标释放滑块时,或调用setSliderDown(false)时,该信号被发出
-
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
参考
- Sliders Example