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