PyQt5之QSlider滑动条点击定位
QSlider 在通常情况下支持鼠标点击可以任意拖动,或者鼠标点击则往鼠标点击的方向移动一小格,这种移动一小格通常情况下用起来很不方便,比如我要做一个播放器的播放进度条,肯定是点击某个位置就直接跳到该位置,为此需要对 QSlider 的鼠标事件 mousePressEvent 进行重写。
# 实现方法
一般的想法就是重写 mousePressEvent 后,得到鼠标点击的 x 和 y 点然后进行比例换算,再通过 setValue 来设置值,其实 QSlider 的 style 里面是有一个 sliderValueFromPosition 方法来计算值的。直接调用这个方法即可。
首先通过 QSlider.style().subControlRect 方法计算得到滑块的区域,当鼠标点击区域在此次时则交给系统自己处理(比如按住不放拖动)
通过 orientation 判断滑动条的方向(横竖)
通过 invertedAppearance 判断滑动条是否反向(左右、上下)
通过 QSlider.style().sliderValueFromPosition(最小值, ...