Ctrl 滚轮 实现文本缩放功能
实现原理
- 继承文本编辑(
QTextEdit)或者纯文本编辑(QPlainTextEdit)重写其中的滚轮事件(wheelEvent)。 - 获取事件的修饰符(
modifier),判断是否是控制修饰符(ControlModifier) - 获取滚动角度(
angleDelta) 的纵轴(y)偏移量 - 如果大于零向上,小于零向下
代码展示
py
# from PySide6.QtGui import QFont,QWheelEvent
# 重写时 倒入 上诉 方便查看文档
def wheelEvent(self, e: QWheelEvent):
"""鼠标滚动事件"""
# 获取 KeyboardModifier 查看是否等于 ControlModifier
if e.modifiers() == Qt.KeyboardModifier.ControlModifier:
# y轴滚动角度 => 上下滚动角度
delta = e.angleDelta().y()
# 向上
if delta > 0:
self.zoomIn()
# 向下
else:
self.zoomOut()
else:
return super().wheelEvent(e)
注意事项
这里的modifiers在Qt for Python的官网里难以找到 但是可以确定的是:返回的类型是 Qt.KeyboardModifier.ControlModifier
这里与参考的Qt文档不同,另一个就是偏移亮(delta)