【Qt】实现 Ctrl + 鼠标滚轮 缩放文本功能
文章目录
- I - 实现自定义控件
- II - 完整代码
- III - 参考链接
I - 实现自定义控件
主要原理 继承 QTextEdit 或者 QPlainTextEdit 类,重写滚轮事件 wheelEvent, QTextEdit 和 QPlainTextEdit 中均包含此函数
头文件 TextEdit.h ,自定义类 TextEdit 继承 QTextEdit (或 QPlainTextEdit)
#include <QTextEdit>
// 或 #include <QPlainTextEdit>
#include <QWheelEvent>class TextEdit : public QTextEdit
// 或 class TextEdit : public QPlainTextEdit
{Q_OBJECT
public:explicit TextEdit(QWidget* parent = nullptr);protected:void wheelEvent(QWheelEvent *e) override; //滚轮事件// 添加 override 编译时检查是否重写父类函数,防止敲错}
源文件 TextEdit.cpp
重写 wheelEvent 函数,调用父类的 zoomIn 和 zoomOut 接口实现缩放
#include <QApplication>
#include "TextEdit.h"TextEdit(QWidget* parent) : QTextEdit(parent)
// 或 TextEdit(QWidget* parent) : QPlainTextEdit(parent)
{
}void TextEdit::wheelEvent(QWheelEvent *e)
{// 检查按键 Ctrl 是否按下if (Qt::ControlModifier == QApplication::keyboardModifiers()){if (e->delta() > 0) // 鼠标滚轮向上滚动{zoomIn(); // 文本放大}else{zoomOut(); // 文本缩小}}// 调用父类事件函数 保证鼠标滚轮查看文本功能正常QTextEdit::wheelEvent(e);// 或 QPlainTextEdit::wheelEvent(e);
}
II - 完整代码
TextEdit.h
#include <QTextEdit>
// 或 #include <QPlainTextEdit>
#include <QWheelEvent>class TextEdit : public QTextEdit
// 或 class TextEdit : public QPlainTextEdit
{Q_OBJECT
public:explicit TextEdit(QWidget* parent = nullptr);protected:void wheelEvent(QWheelEvent *e) override; //滚轮事件// 添加 override 编译时检查是否重写父类函数,防止敲错}
TextEdit.cpp
#include <QApplication>
#include "TextEdit.h"TextEdit(QWidget* parent) : QTextEdit(parent)
// 或 TextEdit(QWidget* parent) : QPlainTextEdit(parent)
{
}void TextEdit::wheelEvent(QWheelEvent *e)
{// 检查按键 Ctrl 是否按下if (Qt::ControlModifier == QApplication::keyboardModifiers()){if (e->delta() > 0) // 鼠标滚轮向上滚动{zoomIn(); // 文本放大}else{zoomOut(); // 文本缩小}}// 调用父类事件函数,保证鼠标滚轮查看文本功能正常QTextEdit::wheelEvent(e);// 或 QPlainTextEdit::wheelEvent(e);
}
III - 参考链接
https://blog.csdn.net/weixin_36323170/article/details/119532007