QAbstractSlider 滑块类基类
- 描述
- 提供的范围内的整数值
- 抽象类,需要借助子类来验证
- 继承自:QWidget
- 功能作用
- 数值范围
- 默认0 ~ 99
setMaximum(int) # 设置最大取值 maximum() -> int # 获取最大取值 setMinimum(int) # 设置最小取值 minimum() -> int # 获取最小取值
- 当前数值
setValue(int) # 设置当前数值 value() -> int # 获取当前数值
- 步长
setPageStep(int) # 设置每页步长(键盘PgUp键、PgDn键) pageStep() -> int setSingleStep(int) # 设置单步步长(键盘上下键) singleStep() -> int
- 是否追踪
setTracking(bool enable) # 设置value是否跟随滑块的位置变化而改变 hasTracking() -> bool # 理解为: # value是否跟随滑块的位置变化而改变 # 默认值为True:滑块滑动,值就发生改变 # False:滑块滑动结束,松开鼠标后值才发生改变 # 对valueChanged信号发射时机的影响
- 滑块位置
setSliderPosition(int) # 设置滑块位置 sliderPosition() -> int # 当setTracking设置为False时,设置滑块的位置后,值不会发生变化
- 倒立外观
- 大小数值位置反过来,默认是下小上大,设置后为下大上小
setInvertedAppearance(bool) # 设置大小数值位置是否反转 invertedAppearance() -> bool
- 操作反转
- 上下键功能反过来,默认上为加下为减,设置后上为减下为加
setInvertedControls(bool) # 设置上下键功能是否反过来 invertedControls() -> bool
- 滑块方向
- 控制外观方向,横向/纵向
setOrientation(Qt.Orientation) # 设置控件摆放方向 orientation() -> Qt.Orientation # 获取控件摆放方向 # 参数 Qt.Orientation Qt.Horizontal # 水平方向 Qt.Vertical # 垂直方向
- 是否按下
setSliderDown(bool) # 设置滑块是否按下状态 isSliderDown() -> bool # 获取滑块是否按下状态
- 数值范围
- 可用信号
sliderPressed() # 滑块被按下时,发射信号 sliderReleased() # 滑块被释放时,发射信号 sliderMoved(int value) # 滑块被移动时,发射信号。传递滑块当前值 valueChanged(int value) # 值发生改变时,发射信号。传递滑块当前值 actionTriggered(int action) # 触发指定行为时,发射信号。传递当前行为对应索引 QAbstractSlider.SliderNoAction # 滑块没有行为 QAbstractSlider.SliderSingleStepAdd # 1,滑块单步步长增加行为,按上下键 QAbstractSlider.SliderSingleStepSub # 2,滑块单步步长减少行为,按上下键 QAbstractSlider.SliderPageStepAdd # 3,滑块每页步长增加行为,按PgUp键 QAbstractSlider.SliderPageStepSub # 4,滑块每页步长减少行为,按PgDn键 QAbstractSlider.SliderToMinimum # 5,滑块移动到最小值行为 QAbstractSlider.SliderToMaximum # 6,滑块移动到最大值行为 QAbstractSlider.SliderMove # 7,滑块移动行为,鼠标拖动滑块 rangeChanged(int min,int max) # 数值范围发生改变时,发射信号。传递最小值和最大值
- 示例代码
- 示例1:QAbstractSlider子类化功能作用演示
from PyQt5.Qt import * import sys class Windows(QWidget): def __init__(self): super().__init__() self.setWindowTitle('QAbstractSlider-子类化功能演示') self.resize(500, 500) self.widget_list() def widget_list(self): self.add_widget() def add_widget(self): # 获取子类 # print(QAbstractSlider.__subclasses__()) labe = QLabel(self) labe.resize(100, 30) labe.move(107, 190) labe.setText('0') sld = QSlider(self) sld.move(100, 100) sld.valueChanged.connect(lambda val:labe.setText(str(val))) # sld.setMaximum(88) # 设置最大值 # sld.setMinimum(22) # 设置最小值 # sld.setValue(44) # 设置当前值 # # sld.setPageStep(10) # 设置每页步长 # sld.setSingleStep(5) # 设置单步步长 # sld.setTracking(False) # 设置是否追踪(值跟随滑块移动而改变) # # sld.setSliderPosition(66) # 设置滑块的位置 # # 注意:设置不追踪时,修改滑块位置,数值不会跟随变化 # # sld.setInvertedAppearance(True) # 设置控件倒置,大小数值上下颠倒。此时按键操作与滑块移动相反 # sld.setInvertedControls(True) # 设置按键操作反转,按键向下数值变大,按键向上数值变小 # # sld.setOrientation(Qt.Horizontal) # 设置控件水平摆放 # sld.setOrientation(Qt.Vertical) # 设置控件垂直摆放 # print(sld.orientation()) # sld.setSliderDown(False) # 设置是否按下状态(看不出效果) # print(sld.isSliderDown()) # 可用信号 # sld.sliderMoved.connect(lambda val:print('滑块移动了', val)) # sld.valueChanged.connect(lambda val:print('值发生了改变', val)) # sld.sliderPressed.connect(lambda : print('滑块被按下了')) # sld.sliderReleased.connect(lambda :print('滑块被释放了')) sld.actionTriggered.connect(lambda val: print('行为发生改变', val)) sld.rangeChanged.connect(lambda val1,val2:print('范围发生了改变', val1,val2)) sld.setMaximum(999) sld.setMinimum(-99) if __name__ == '__main__': app = QApplication(sys.argv) window = Windows() window.show() sys.exit(app.exec_())