PyQt5 之实现 QSlider 进度条的点哪指哪

PyQt5 之实现 QSlider 进度条的点哪指哪
MGodmonkey原文链接(本人写的啊,不算抄袭😎):《ESP32-Arduino》LVGL 之输入设备详解及实例 (触摸屏,实体按键,编码器,多功能按键)
前言:最近在做项目的播放器部分,但在进度条部分却遭遇了问题,QSlider 本身是支持滑块拖动和点击事件的,但 QSlider 的点击事件并不是点哪跳哪,而是点一下,会根据 QSLider 的步进增一步或减一步。
无论遇到什么问题,我们都要・・・干就完了,OLG!
但理想是丰满的,现实总是刺骨的
不搜不知道,一搜才发现关于 pyqt5 的资料是真的少,不是说没有,而是大部分都是讲述基础部分,进阶的,额,也就那样,难道都没人有进度条随意点动的需求么,还是说用 python 做 GUI 的不多。
好吧,无奈,我只能从 pyqt5 的老父亲 Qt 的身上寻找答案了
结果千辛万苦搜到了了几条结果,结果如下:
cpp
1 | void mousePressEvent(QMouseEvent *ev) |
可以看到大致流程如下:
- 重写 QSlider.mousePressEvent (鼠标单击事件)
- 调用父类的鼠标单击处理事件 (这里是必须的,因为滑动条的拖动也是一个鼠标单击事件,这样滑动条原有的滑动功能就没有了)
- 获取鼠标单击的位置,计算鼠标位置在进度条上的比值
- 进度条当前值 = 比值 * 进度条总值
这下就好办了,转 python
python
1 | def mousePressEvent(self, event): |
注:C++ 中所指的父类千万别照搬下来也写成 QSlider.mousePressEvent (event), 也不要以为父类指的是 self.parent (),这两种都是错误的,别问我为什么,说多了都是泪
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果