根据官网文件的内容介绍
滑块的长度通常与页面步长的值相关,通常表示滚动视图中显示的文档区域的比例。页面步长是用户按“向上翻页”和“向下翻页”键时值更改的量,并使用setPageStep() 进行设置。对行步长定义的值的较小更改是使用光标键进行的,并且此数量是使用setSingleStep() 设置的。
请注意,使用的值范围与滚动条构件的实际大小无关。在为范围和页面步长选择值时,无需考虑这一点。
自己理解
根据文档所述,使用setPageSstep是靠键盘的上下箭头,或者控件的上下按钮来设置,使用setSingleStep是靠鼠标的滚轮来设置,经我本人测试,似乎跟我所理解的相反,代码见下文。
我会将此控件的两种情况来展示。
第一种情况:只使用QScrollArea控件
import sys
from PyQt5.Qt import *
class Text(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("窗口标题")
self.resize(600,500)
self.setup_ui()
def setup_ui(self):
scroll_area = QScrollArea(self)
scroll_area.move(100,100)
bar = QScrollBar(scroll_area)
scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll_area.setVerticalScrollBar(bar)
"""***
设置步长需要设置在,添加部 件之后添加
***"""
print("bar控件当前的值",bar.value())
bar.setMaximum(100)
bar.setPageStep(1)
bar.setSingleStep(int(2))
bar.valueChanged.connect(self.t)
def t(self,value):
print("滑块改变后的值",value)
if __name__ == '__main__':
app = QApplication(sys.argv)
t = Text()
t.show()
app.exec_()
运行代码,我们可以看到鼠标滑动的步长为1,键盘的步长为2.
第二种情况:在QSCrollArea控件中添加QWidget控件
import sys
from PyQt5.Qt import *
class Text(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("窗口标题")
self.resize(600,500)
self.setup_ui()
def setup_ui(self):
scroll_area = QScrollArea(self)
scroll_area.move(100,100)
win = QWidget()
win.setFixedSize(1000,1000)
scroll_area.setWidget(win)
bar = QScrollBar(scroll_area)
scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll_area.setVerticalScrollBar(bar)
"""***
设置步长需要设置在,添加部 件之后添加
***"""
print("bar控件当前的值",bar.value())
bar.setMaximum(100)
bar.setPageStep(5) # 没添加控件是滚轮,添加控件此设置失效
bar.setSingleStep(int(2)) # 没添加控件是键盘,添加后:滚轮是步长*3,键盘是自定义设置,并使setPageStep无效果设置无效果
bar.valueChanged.connect(self.t)
def t(self,value):
print("滑块改变后的值",value)
if __name__ == '__main__':
app = QApplication(sys.argv)
t = Text()
t.show()
app.exec_()
运行代码,我们可以看到鼠标滑动的步长为setSingleStep的3倍,键盘的步长为setSingleStep的初始设置的值。并且setPageStep无效果设置无效果。