QAbstractSlider
一、描述
此类为 QScrollBar、QSlider 和 QDial 等小部件的通用超类。
二、属性成员
1、invertedAppearance : bool
是否倒置外观。
如果为 false(默认值),则最小值和最大值将显示在继承小部件的经典位置。
如果为true,则最小值和最大值出现在它们相反的位置。
2、invertedControls : bool
是否反转其滚轮和按键事件。
如果为 false,则向上滚动鼠标滚轮或使用向上翻页等键会将值增加到最大值。
如果为 true,则向上滚动鼠标滚轮或使用向上翻页等键会将值减小到最小值。
3、maximum : int
最大值。设置此属性时,如有必要,会调整最小值以确保范围保持有效。当前值也被调整到新的范围内。
4、minimum : int
最小值。设置此属性时,如有必要,会调整最大值以确保范围保持有效。 当前值也被调整到新的范围内。
5、orientation : Qt::Orientation
滑块的方向。方向是 Qt::Vertical(默认)或 Qt::Horizontal。
6、pageStep : int
Page步长。按下 PageUp 或 PageDown 键会变化的值。
7、singleStep : int
单步。按下方向键会变化的值。
8、sliderDown : bool
滑块是否被按下。
9、sliderPosition : int
当前滑块位置。如果启用了 tracking,则与 value 相同。
10、tracking : bool
是否启用滑块跟踪。默认为true。
如果启用,则滑块在拖动滑块时会发出 valueChanged() 信号。 如果禁用,则滑块仅在用户释放滑块时才会发出 valueChanged() 信号。
11、value : int
滑块的当前值。滑块强制值在合法范围内:最小值 <= 值 <= 最大值。
更改 value 也会更改 sliderPosition 。
三、成员函数
1、【信号】void actionTriggered(int action)
当滑块动作动作被触发时会发出这个信号。动作包括:
- SliderNoAction
- SliderSingleStepAdd
- SliderSingleStepSub
- SliderPageStepAdd
- SliderPageStepSub
- SliderToMinimum
- SliderToMaximum
- SliderMove
当信号发出时,sliderPosition 已经根据动作进行了调整,但是 value 还没有被传播(意味着 valueChanged() 信号还没有发出),视觉显示还没有更新。因此,在连接到此信号的槽中,可以根据动作和滑块的值自己调用 setSliderPosition() 来安全地调整任何动作。
void triggerAction(QAbstractSlider::SliderAction action)
触发滑块动作。
2、【信号】void rangeChanged(int min, int max)
当滑块范围发生变化时会发出此信号,min 是新的最小值,max 是新的最大值。
3、void setRange(int min, int max)
将滑块的最小值设置为 min,将其最大值设置为 max。
4、【信号】void sliderMoved(int value)
当 sliderDown 为true并且滑块移动时发出此信号。这通常发生在用户拖动滑块时。value 是新的滑块位置。
即使 tracking 为 false 也会发出此信号。
5、【信号】void sliderPressed()
此信号在用户使用鼠标按下滑块时、在调用 setSliderDown(true) 时发出。
6、【信号】void sliderReleased()
当用户使用鼠标释放滑块时、在调用 setSliderDown(false) 时发出此信号。
7、 【信号】void valueChanged(int value)
当 value 发生变化时会发出此信号,并将新滑块值作为参数。
8、void setRepeatAction(QAbstractSlider::SliderAction action,int thresholdTime = 500,int repeatTime = 50)
在 thresholdTime 的初始延迟之后,将 action 操作设置为以 repeatTime 的间隔重复触发。
QAbstractSlider::SliderAction repeatAction()
返回当前的重复动作。
9、void sliderChange(QAbstractSlider::SliderChange change)
重新实现此虚函数以跟踪滑块更改。
- SliderRangeChange
- SliderOrientationChange
- SliderStepsChange
- SliderValueChange
QSlider
一、描述
QSlider 是用于控制有界值的经典小部件。它允许用户沿水平或垂直凹槽移动滑块手柄,并将手柄的位置转换为合法范围内的整数值。
QSlider 自己的功能很少; 大多数功能都在 QAbstractSlider 中。 最有用的函数是 setValue() 直接将滑块设置为某个值。
二、类型成员
1、enum QSlider::TickPosition:此枚举指定相对于滑块的凹槽和用户移动的手柄绘制刻度线的位置。
- NoTicks:不绘制任何刻度线。
- TicksBothSides:在凹槽的两侧绘制刻度线。
- TicksAbove:在(水平)滑块上方绘制刻度线
- TicksBelow:在(水平)滑块下方绘制刻度线
- TicksLeft:在(垂直)滑块左侧绘制刻度线
- TicksRight:在(垂直)滑块的右侧绘制刻度线
三、属性成员
1、tickInterval : int
刻度线之间的间隔。这是一个值区间,而不是像素区间。默认值为 0。
如果为 0,则滑块将在 singleStep 和 pageStep 之间进行选择。
2、tickPosition : TickPosition
滑块的刻度线位置。默认值为 QSlider::NoTicks。
四、成员函数
1、void initStyleOption(QStyleOptionSlider *option)
使用此 QSlider 中的值初始化选项。 当子类需要一个 QStyleOptionSlider 但又不想自己填写所有信息时,此方法很有用。
QDial
一、描述
QDial 类提供了一个圆形范围控制控件。
由于 QDial 继承自 QAbstractSlider,所以它的行为类似于滑块。
与滑块不同的是,QDial 尝试绘制一定数量的刻线。
但如果没有足够的像素来绘制每一个刻线,QDial 将尝试绘制一个统一集(例如,每隔二个或三个刻线绘制一次)。
二、属性成员
1、notchSize : const int
当前的刻线数量。
此属性以范围控制单位为单位,而不是像素,并且计算为 singleStep() 的倍数,从而使屏幕上的刻线大小接近 notchTarget()。
2、notchTarget : qreal
刻线之间的像素数。默认为 3.7 像素。QDial 尝试放置在每个刻线之间的像素数。
3、notchesVisible : bool
是否显示刻线。默认不显示刻线。
如果为true,则在表盘周围绘制一系列刻线以指示可用值的范围。
4、wrapping : bool
是否启用环绕。默认为 false。
如果启用,箭头可以在刻度盘上以任意角度定向。
如果禁用,箭头将被限制在表盘的上部,如果它被旋转到表盘底部的空间中,它将被夹到有效值范围的最近端。
三、成员函数
1、void initStyleOption(QStyleOptionSlider *option)
使用此 QDial 中的值初始化选项。当子类需要一个 QStyleOptionSlider 但又不想自己填写所有信息时,此方法很有用。
QScrollBar
一、描述
滚动条控件,它使用户能够访问大于用于显示它的小部件的文档部分。它提供了用户在文档中的当前位置和可见文档数量的视觉指示。滚动条通常配备其他控件,可以实现更准确的导航。 Qt 以适合每个平台的方式显示滚动条。
如果需要在另一个小部件上提供滚动视图,使用 QScrollArea 类可能更方便,因为它提供了视口小部件和滚动条。如果需要使用 QAbstractScrollArea 为专门的小部件实现类似的功能,QScrollBar 很有用。对于使用滑块控件获取给定范围内的值的大多数其他情况,QSlider 类可能更适合。
滚动条通常包括四个独立的控件:滑块、滚动箭头和页面控件。
- a滑块:提供了一种快速转到文档任何部分的方法,但不支持在大型文档中进行准确导航。
- b滚动箭头:按钮,可用于准确导航到文档中的特定位置。
- c页面控件:拖动滑块的区域(滚动条的背景)。 单击此处将滚动条移向单击一个“页面”。 该值通常与滑块的长度相同。
为滚动条指定的值范围通常与为 QSlider 确定的值范围不同,因为需要考虑滑块的长度。如果有一个 100 行的文档,而只能在一个小部件中显示 20 行,可能希望构建一个页面步长为 20、最小值为 0、最大值为 80 的滚动条。这将给我们一个带有五个“页面”的滚动条。
文档长度、滚动条中使用的值范围和 pageStep 之间的关系:
文档长度 = maximum() - minimum() + pageStep()
QScrollBar 只提供整数范围。尽管 QScrollBar 处理非常大的数字,但当前屏幕上的滚动条不能有效地表示超过 100,000 像素的范围。 除此之外,用户很难使用键盘或鼠标来控制滑块,并且滚动箭头的使用将受到限制。
二、成员函数
1、void initStyleOption(QStyleOptionSlider *option)
使用此 QScrollBar 中的值初始化选项。 当子类需要一个 QStyleOptionSlider 但又不想自己填写所有信息时,此方法很有用。