QSlider简介
- QSlider小部件提供了一个垂直或水平滑块。
- 滑块是控制有界值的经典控件。它允许用户沿水平或垂直凹槽移动滑块手柄,并将手柄的位置转换为合法范围内的整数值。
QSlider常用属性和方法
- slider 提供了两个自然的步长;较大的步长用 pageStep 表示,相当于按下键盘上的 PageDown 和 PageUp;较小的步长用 singleStep 表示,相当于按下键盘上的上、下键。
- Left/Down,使滑动条减少一个singleStep
- Right/Up,使滑动条增加一个singleStep
- PageUp/PageDown,使滑动条增加/减少一个pageStep
- Home/End,使滑动条移动到min/max(注意不要搞反)
名称 | 描述 |
---|
setOrientation() | 设置slider的方向Qt.Horizontal,或者Qt.Vertical |
orientation() | 获取slider的方向 |
setMaximum(int) | 设置最大值 |
maximum() | 获取最大值 |
setMinimum(int) | 设置最小值 |
minimum() | 获取最小值 |
setPageStep(int) | 设置每页的步长 |
pageStep() | 获取每页的步长 |
setSingleStep(int) | 即单步移动的步长 |
singleStep() | 获取单步的步长 |
setSliderPosition(int) | 设置slider的位置 |
sliderPosition() | 获取slider的位置 |
setValue(int) | 设置slider 的值,与setSliderPosition(int)一致 |
value() | 获取slider 的值 |
setInvertedAppearance(True/False) | 设置 slider 的值进行反转: 即如果是水平方向的 slider,默认情况下,最小值在最左边,最大值在最右边,但是设置 slider 的值进行反转后,最小值变到了最右边,最大值改到了最左边 |
invertedAppearance | 获取翻转设置 |
setTracking(True/False) | 置是否启动滑块追踪:true 表示启动追踪;false 表示禁用追踪;如果启用了滑块追踪,则滑块在拖动过程中会一直触发 valueChanged 信号;如果禁用了滑块追踪,则滑块在拖动过程中不会触发 valueChanged 信号,只有在用户释放滑块时,才触发 valueChanged 信号 |
hasTracking()|获取是否启用了追踪
QSlider常用信号
- sliderMoved和valueChanged的区别在于,sliderMoved只会在滑块被拖动的情况下激活,在直接点击滑动条时它并不会被激活
名称 | 描述 |
---|
rangeChanged(int min, int max) | 当 slider 的取值范围发生变化时触发的信号;其中参数 min 表示新的最小值,参数 max 表示新的最大值。 |
sliderMoved(int) | 当 slider 移动时触发的信号 |
valueChanged(int) | 当 slider 的值发生改变时触发的信号 |
sliderPressed() sliderReleased() | 表示用户按下 slider 和释放 slider 触发的信号 |
QSlider刻度线
- QSlider允许在滑动条旁边画一条刻度线,并设置刻度线的位置和刻度线之间的间距。
关于刻度线的方法
- 间距值的单位不是毫米厘米这些,而是根据min,max得到的单位。
方法 | 描述 |
---|
TickPosition tickPosition (self) | 获取刻度线位置 |
setTickPosition (self, TickPosition position) | 设置刻度线位置 |
int tickInterval (self) | 获取刻度线间隔 |
setTickInterval (self, int ti) | 设置刻度线间隔 |
刻度线的位置TickPosition
常量 | 描述 |
---|
QSlider.NoTicks | 不设置刻度线 |
QSlider.TicksBothSides | 两边都设置刻度线 |
QSlider.TicksAbove | 在水平滑动条上方设置刻度线 |
QSlider.TicksBelow | 在水平滑动条下方设置刻度线 |
QSlider.TicksLeft | 在垂直滑动条左方设置刻度线 |
QSlider.TicksRight | 在垂直滑动条右方设置刻度线 |
QSlider举例
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class SliderDemo(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("QSlider Demo")
self.resize(300, 100)
self.lb1 = QLabel("我爱你,中国!")
self.lb1.setAlignment(Qt.AlignCenter)
self.sl = QSlider(Qt.Horizontal)
print(self.sl.orientation())
self.sl.setMinimum(10)
self.sl.setMaximum(50)
self.sl.setInvertedAppearance(True)
self.sl.setPageStep(15)
self.sl.setSingleStep(3)
self.sl.setValue(20)
self.sl.setTickPosition(QSlider.TicksBelow)
self.sl.setTickInterval(5)
vbox = QVBoxLayout(self)
vbox.addWidget(self.lb1)
vbox.addWidget(self.sl)
self.sl.valueChanged.connect(self.slot_value_change)
self.sl.rangeChanged.connect(self.slot_range_change)
def slot_value_change(self):
print('current slider value=%s' % self.sl.value())
size = self.sl.value()
self.lb1.setFont(QFont("Arial", size))
print(self.sl.sliderPosition())
print(self.sl.value())
if size == 50:
self.sl.setMaximum(100)
def slot_range_change(self):
print("max value change to %d" % self.sl.value())
def slot_slider_move(self):
print("slider is moving")
print(self.sl.value())
if __name__ == '__main__':
app = QApplication(sys.argv)
window = SliderDemo()
window.show()
sys.exit(app.exec())