qt设置过滤器

news/2024/9/24 15:44:15/

1.创建事件过滤器类,在主窗口中安装事件过滤器

class PasteFilter : public QObject {Q_OBJECTpublic:PasteFilter(QObject *parent = nullptr) : QObject(parent) {}protected:bool eventFilter(QObject *obj, QEvent *event) override {if (event->type() == QEvent::KeyPress) {QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);if (keyEvent->modifiers() == Qt::ControlModifier && keyEvent->key() == Qt::Key_V) {QTextEdit *textEdit = qobject_cast<QTextEdit *>(obj);if (textEdit) {QClipboard *clipboard = QApplication::clipboard();QString clipboardText = clipboard->text();QString quotedText = "\"" + clipboardText + "\"";QTextCursor cursor = textEdit->textCursor();cursor.insertText(quotedText);return true;}}}return QObject::eventFilter(obj, event);}
};PasteFilter *pasteFilter = new PasteFilter(this);ui->textEdit->installEventFilter(pasteFilter);

2. 自定义控件,重写控件的event事件

    void keyPressEvent(QKeyEvent *event) override {if (event->modifiers() == Qt::ControlModifier && event->key() == Qt::Key_V) {// 捕获 Ctrl+V 事件QClipboard *clipboard = QApplication::clipboard();QString originalText = clipboard->text();QString quotedText = "\"" + originalText + "\"";// 插入带引号的文本this->insertPlainText(quotedText);} else {// 调用基类的方法处理其他按键事件QTextEdit::keyPressEvent(event);}}

 


http://www.ppmy.cn/news/1499843.html

相关文章

上传文件传参 pc端vue的formData

formData let formData new FormData(); formData.append("file", blob, ref ".png"); //添加参数并且重新命名文件名称 if(ref.toString().indexOf(qrcode) > 0) formData.append(noStbg, true)//添加参数 uploadType(formData, sour…

通过mqtt.fx连接阿里云

通过mqtt.fx连接阿里云&#xff0c;需要完成以下步骤。请注意&#xff0c;以下步骤基于当前可用的信息和常见的操作流程&#xff0c;但实际操作时可能因阿里云平台的更新而有所变化。 一、阿里云平台配置 注册并登录阿里云账号&#xff1a; 访问阿里云官网&#xff08;aliyun…

告别手动打字!这个视频转文字方法,准确率高达98%

不知道大家是不是跟小小迅一样&#xff0c;平时喜欢看一些视频教程来学习ps等之类的技术。 不过视频学习有个痛点&#xff0c;就是不好整理总结。需要时不时暂停视频或者回放&#xff0c;记录下课程的重点等。如果遇到那种全程高能的知识类视频&#xff0c;可能整理笔记就需要…

将本地 Git 仓库连接到 GitHub 上的远程仓库

将本地 Git 仓库连接到 GitHub 上的远程仓库&#xff0c;并将本地的主要分支推送到远程仓库。 命令解释 git remote add origin https://github.com/xiaoqiuslam/ros_car.git&#xff1a; 这条命令将远程仓库添加为名为 origin 的远程库。 git branch -M main&#xff1a; 这…

强化数字科技基石:深化基础理论研究

加强数字科技基础理论研究并增加对其的资金投入&#xff0c;对于推动科技进步、培养创新人才以及构建具有国际竞争力的科技创新体系都具有深远意义。同时为了加强数字科技基础理论研究并推动产业园的发展&#xff0c;我们可以从以下几个方面进行&#xff1a; 一、加强数字科技…

生活的疲惫感

这周听闻我一好友因工作过劳&#xff0c;而生病住院&#xff0c;住院期间还要开会工作&#xff0c;有点心疼。闲聊几句&#xff0c;都言疲惫。为什么我们疲惫了&#xff1f;一个人背很重的东西没日没夜的走路&#xff0c;自然会疲惫。我们背负昨天的今天的明天的&#xff0c;自…

vue3大事件管理系统 === 首页 layout 文章分类页面 -

目录 首页 layout 架子 [element-plus 菜单] 基本架子拆解 登录访问拦截 用户基本信息获取&渲染 退出功能 [element-plus 确认框] 文章分类页面 - [element-plus 表格] 基本架子 - PageContainer 文章分类渲染 封装API - 请求获取表格数据 el-table 表格动态渲染 …

Android11 framework 禁止三方应用通过广播开机自启动-独立方案

之前的文章Android11 framework 禁止三方应用开机自启动记录了我调试Android11应用自启动限制的全过程&#xff0c;但是之前的方案感觉还能再研究&#xff0c;所以有了这一篇文章。 这一篇文章主要探讨Android11上&#xff0c;以广播来进行自启动的应用的限制&#xff0c;极个别…