【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