QScrollBar理论总结
- 1. 简述
- 2. 滚动条组成
- 3. 常用设置
- 5. 信号
- 6. 键盘功能
1. 简述
QScrollBar其实就是一个滚动条控件,它使用户能够访问大于用于显示文档的小组件的文档部分。它提供了用户在文档中的当前位置以及可见的文档量的可视指示。滚动条通常配备其他控件,以实现更准确的导航。Qt以适合每个平台的方式显示滚动条。滚动条的本质就是因为需要显示的内容已经超出窗口的大小,就需要用这个滚动条来控制和指示当前的位置。
如果需要在另一个小部件上提供滚动视图,使用 QScrollArea 类可能更方便,因为它提供了一个视口小部件和滚动条。
滚动条通过构造函数的时候来设置其水平还是垂直方向的滚动条。
2. 滚动条组成
滚动条通常包括四个单独的控件:滑块、滚动箭头和页面控件。
下面是各个组件的介绍
- a. 滑块提供了一种快速转到文档任何部分的方法,但不支持在大型文档中进行准确导航。(粗略控制)
- b. 滚动箭头是按钮,可用于准确导航到文档中的特定位置。对于连接到文本编辑器的垂直滚动条,这些通常将当前位置向上或向下移动一“行”,并少量调整滑块的位置。在编辑器和列表框中,“行”可能表示一行文本;在图像查看器中,它可能意味着 20 像素。(其实可以就理解为精确控制)
- c. 页面控件是拖动滑块的区域(滚动条的背景)。单击此处将滚动条向单击一个“页面”移动。此值通常与滑块的长度相同。(鼠标左、右键有很多方便的功能)
3. 常用设置
每个滚动条都有一个值,指示滑块与滚动条开头的距离;这是用 value() 获得的,并使用 setValue() 设置的。此值始终位于为滚动条定义的值范围内,从最小值() 到最大值(包括最大值)。可接受的值范围可以使用 setMinimum() 和 setMaximum() 进行设置。在最小值下,滑块的上边缘(对于垂直滚动条)或左边缘(对于水平滚动条)将位于滚动条的顶端(或左端)。在最大值时,滑块的底部(或右)边缘将位于滚动条的底部(或右端)。
滑块的长度通常与页面步长的值相关,通常表示滚动视图中显示的文档区域的比例。页面步长是用户按向上翻页和向下翻页键时值更改的数量,并使用 setPageStep() 进行设置。对行步长定义的值的较小更改是使用光标键进行的,并且此数量是使用 setSingleStep() 设置的。
请注意,使用的值范围与滚动条构件的实际大小无关。在为范围和页面步长选择值时,无需考虑这一点。
为滚动条指定的值范围通常与 QScrollBar 指定的值范围不同,因为需要考虑滑块的长度。如果我们有一个 100 行的文档,并且我们只能在一个小部件中显示 20 行,我们可能希望构建一个页面步长为 20、最小值为 0、最大值为 80 的滚动条。这将给我们一个带有五个“页面”的滚动条。
在许多常见情况下,文档长度、滚动条中使用的值范围和页面步骤之间的关系很简单。滚动条的值范围是通过从表示文档长度的某个值中减去选定的页面步长来确定的。在这种情况下
关系式:文档长度 = maximum() - minimum() + pageStep() 。
QScrollBar 仅提供整数值设定范围。尽管 QScrollBar 处理非常大的数字,但当前屏幕上的滚动条无法有效地表示大约 100,000 像素以上的范围。除此之外,用户很难使用键盘或鼠标控制滑块,并且滚动箭头的用途有限。
5. 信号
这些信号和其父类的基本完全一致的。
信号名 | 含义 |
---|---|
valueChanged() | 当 value 属性改变时. 改变可以是编程实现、也可以是用户交互时改变. |
sliderPressed() | 就是Silder滑块被按下,准备去拖动时 |
sliderMoved() | 滑块拖动时 |
sliderReleased() | 用户松开滑块的时候 |
actionTriggered() | slider 的 action 触发时 |
rangeChanged() | 就是 minimum 和 maximum 发生改变时候触发 |
actionTriggered() 信号指的是 触发滑块操作时会发出此信号。Action 包括 SliderSingleStepAdd、SliderSingleStepSub、SliderPageStepAdd、SliderPageStepSub、SliderToMinimum、SliderToMaximum 和 SliderMove发生调用的时候。
发出信号时,滑块位置已根据动作进行调整,但该值尚未传播(表示尚未发出 valueChanged() 信号),并且可视化显示尚未更新。因此,在连接到此信号的插槽中,您可以通过根据动作和滑块的值自己调用 setSliderPosition() 来安全地调整任何动作。
6. 键盘功能
QScrollBar可以使用 Tab 、 鼠标滚轮 和 键盘 交互。
一个 page 其实可以看成是 多个 step 的集合。这样就很方便的翻页啦,毕竟一个一个移动肯定要慢些,page可以粗调,step精调。
键盘名 | 功能 |
---|---|
Left/Right | 水平滑动条移动一个 step |
Up/Down | 垂直滑动条移动一个 step |
PageUp | 向上移动一个page 页. |
PageDown | 向下移动一个page 页. |
Home | 移动到 最开始 (mininum). |
End | 移动到 最后面 (maximum). |
这个大概了解一下 常用设置的 页面组成构成其实就够了