Qt事件过滤器
1 介绍
事件过滤器是一种机制,当某个QObject没有所需要的事件功能时,可将其委托给其它QObject,通过eventFilter成员函数来过滤实现功能。
2 主要构成
委托:
ui->QObject1->installEventFilter(QObject2);eventFilter声明
virtual bool eventFilter(QObject *watched, QEvent *event) override;
在Qt creator中,可以使用如下步骤简化实现:
a)右键widget
b)选择insert Virtual。。。:

c)选择eventFilter,并勾选如下,稍后将定义粘贴到对应的.cpp文件中即可


3 示例代码:使用事件过滤器对label实现单双击事件响应
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QEvent>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//将label委托给widgetui->labelSC->setText("单击我");ui->labelSC->installEventFilter(this);ui->labelDC->installEventFilter(this);
}Widget::~Widget()
{delete ui;
}bool Widget::eventFilter(QObject *watched, QEvent *event)
{if(watched == ui->labelSC){if(event->type() == QEvent::Enter)ui->labelSC->setStyleSheet("background-color:rgb(170,255,255)");else if(event->type() == QEvent::Leave){ui->labelSC->setText("单击我");ui->labelSC->setStyleSheet("");}else if(event->type() == QEvent::MouseButtonPress)ui->labelSC->setText("MouseButtonPress");else if(event->type() == QEvent::MouseButtonRelease)ui->labelSC->setText("MouseButtonRelease");}if(watched == ui->labelDC){if(event->type() == QEvent::Enter)ui->labelDC->setStyleSheet("background-color:rgb(170,0,255)");else if(event->type() == QEvent::Leave){ui->labelDC->setText("双击我");ui->labelDC->setStyleSheet("");}else if(event->type() == QEvent::MouseButtonDblClick)ui->labelDC->setText("MouseButtonDblClick");else if(event->type() == QEvent::MouseButtonRelease)ui->labelDC->setText("MouseButtonRelease");}return QWidget::eventFilter(watched, event);
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;// QObject interface
public:virtual bool eventFilter(QObject *watched, QEvent *event) override;
};#endif // WIDGET_H
相关文章:
Qt事件过滤器
1 介绍 事件过滤器是一种机制,当某个QObject没有所需要的事件功能时,可将其委托给其它QObject,通过eventFilter成员函数来过滤实现功能。 2 主要构成 委托: ui->QObject1->installEventFilter(QObject2); eventFilter声明 …...
Java基础集合框架学习(上)
文章目录 初识基础框架为什么使用集合框架集合框架的继承关系ArrayList入门案例单元测试和增删改查单元测试的注意事项LinkedList入门案例ArrayList底层是数组LinkedList底层是链表ArrayList和LinkedList选型ArrayList存放DOG对象 初识基础框架 Java基础集合框架是Java编程语言…...
北京多铁克FPGA笔试题目
1、使用D触发器来实现二分频 2、序列检测器,检测101,输出1,其余情况输出0 module Detect_101(input clk,input rst_n,input data, //输入的序列output reg flag_101 //检测到101序列的输出标志 );parameter S0 2d0;S1 2d1;S2 2d2;S4 …...
从初学者的角度来理解指针常量和常量指针
重新理解指针常量,常量指针 应用 我先提一个问题:知道指针常量,常量指针存在的作用是什么吗? 先了解它们存在的作用再去理解它们,或许更轻松些。 比如配置文件读取:在许多工程中,配置文件用于…...
C# OpenCvSharp 去水印 图像修复
效果 项目 VS2022.net4.8OpenCvSharp4 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; usi…...
考研算法第40天:众数 【模拟,简单题】
题目 本题收获 又是一道比较简单的模拟题,就不说解题思路了,说一下中间遇到的问题吧,就是说cin输入它是碰到空格就停止输入的,详细的看下面这篇博客对于cin提取输入流遇到空格的问题_while(cin) 空格_就是那个党伟的博客-CSDN博…...
MySQL:内置函数、复合查询和内外连接
内置函数 select 函数; 日期函数 字符串函数 数学函数 其它函数 复合查询(多表查询) 实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张 表EMP,DEPT,SALGRADE来演示如何进行多表查询…...
【HTML】label 标签
在HTML中,<label> 标签用于为表单元素创建标签文本或标题。它可以与输入字段(如文本框、单选按钮、复选框等)和其他表单元素关联起来,以提高可用性和可访问性。 <label> 元素有两种常见的用法: 包裹方式…...
python视频流截图(按帧数)
一、安装opencv计算机视觉库 pip install opencv-python二、视频流截图 1、读取视频文件,获取视频帧数 import cv2 # 视频位置 video_path path_file_name # 读取视频 cap cv2.VideoCapture(video_path) # 获取视频总帧数 frame_count cap.get(cv2.CAP_PROP_F…...
MongoDB SQL
Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>cd C:\MongoDB\Server\3.4\binC:\MongoDB\Server\3.4\bin> C:\MongoDB\Server\3.4\bin> C:\MongoDB\Server\3.4\bin>net start MongoDB 请求的…...
node js连接mysql数据库
首先,确保你已经安装了 mysql2 模块。如果没有安装,可以使用以下命令进行安装: npm install mysql2创建一个 Node.js 脚本,例如 connectToMysql.js,并使用以下代码: const mysql require(mysql2);// 创建…...
通过Python模拟计算附近WIFI密码,没有我蹭不到的网
前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 今天来分享一下如何通过 Python 脚本实现 WIFI 密码的自动猜解 无图形界面 先来看看怎么实现没有图形界面版的自动猜解。 WIFI猜解 导入模块 import pywifi from pywifi import const import time import datetime测试连…...
ubuntu20.04 远程桌面配置记录【亲测好用】
简介 ubuntu系统下有好几种不同方式的远程桌面方式,本人都使用过,以下是一些使用总结: vnc4server:其中vnc4server对gnome桌面支持不好 vino:系统自带,但需要用户登录一次后才能远程,并且需要安…...
解决selenium的“can‘t access dead object”错误
目录 问题描述 原因 解决方法 示例代码 资料获取方法 问题描述 在python执行过程中,提示selenium.common.exceptions.WebDriverException: Message: TypeError: cant access dead object 原因 原因是代码中用到了frame,获取元素前需要切换到frame才能定位到…...
Docker Dockerfile 使用方法
目录 Dockerfile 介绍 Dockerfile 示例 Dockerfile 介绍 当使用Docker构建容器化应用程序时,Dockerfile是一个用于定义容器镜像的文本文件。它包含了一系列指令,告诉Docker如何从基础镜像(通常是官方或自定义的操作系统镜像)构…...
(6)(6.3) 复合连接的故障处理
文章目录 6.3 复合连接的故障处理 6.4 相关话题 6.3 复合连接的故障处理 带有 F7 或 H7 处理器并有 CAN 接口的自动驾驶仪使用的固件提供两个 USB 接口。一个用于正常的 MAVLink 连接,一个用于 SLCAN 串行连接到 CAN 接口进行配置和固件更新。这被称为复合型 USB…...
报考红帽认证难不,红帽认证考试容易吗?
红帽认证是由红帽Linux公司推出的,红帽培训和测试非常注重培养实际的动手实战能力,主要包括RHCSA认证、RHCE认证和RHCA认证,每个等级的认证都是层层递进的。 要想参加RHCA认证就必须通过RHCE认证,且认证证书在有效期内方可参加。 …...
如何优雅地用VS编写C#代码——快捷键的使用
F4:打开属性面板 F5:调试 CtrlF5:直接执行,不挑食 F9:设置、切换断点 F10:逐过程 F11:逐语句 F12:转到定义 AltF12:查看定义 CtrlF:查找 CtrlKCtrlK&…...
微服务——操作索引库+文档操作+RestClient操作索引库和文档(java程序)
索引库操作 mapping属性 mapping是对文档的约束,常见约束属性包括: 创建索引库 #创建索引库 PUT /heima {"mappings": {"properties": {"info":{"type": "text","analyzer": "ik_smart"},…...
【性能测试】性能数据采集工具nmon安装使用及报告参数含义详解
目录 nmon nmon下载 解压安装 启动 数据采集配置 生成图形结果 nmon报告中的参数含义 资料获取方法 nmon nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文…...
手机号码定位终极指南:5分钟学会如何快速查询号码归属地
手机号码定位终极指南:5分钟学会如何快速查询号码归属地 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mi…...
从噪声到精准:DiffDet4SAR如何用扩散模型革新SAR飞机检测
1. 为什么SAR飞机检测这么难? 第一次接触SAR图像的朋友可能会觉得奇怪:这黑乎乎一片带白点的图像,怎么找飞机?其实这正是SAR(合成孔径雷达)成像的特点——它不像光学照片那样直观。SAR通过发射微波并接收回…...
S2-Pro数据库课程设计辅助:从ER图到智能SQL生成全流程
S2-Pro数据库课程设计辅助:从ER图到智能SQL生成全流程 1. 课程设计的痛点与解决方案 每到学期末,计算机专业的学生们都会面临一个共同的挑战——数据库课程设计。从需求分析到ER图绘制,再到SQL语句编写,整个过程既考验专业能力又…...
Phi-4-Reasoning-Vision一键部署:适配A100/H100集群的多卡扩展部署方案
Phi-4-Reasoning-Vision一键部署:适配A100/H100集群的多卡扩展部署方案 1. 项目概述 Phi-4-Reasoning-Vision是基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为专业级GPU集群环境设计。这个工具解决了大参数多模态模型在实际…...
CH7034B显示模块原理图设计,已量产
目录 1、系统整体架构设计 2、核心子系统电路设计 2.1、CH7034B 主桥接芯片与 RGB 输入组织 2.2、模拟显示输出与 DDC 边界 2.3、1.8V 核心电源、27MHz 时钟与辅助控制器 2.4、背光与边角控制电路 3、硬件性能优化与工程化考量 3.1、电源与噪声控制 3.2、信号完整性与…...
10个Yellowbrick可视化技巧:提升机器学习模型诊断效率
10个Yellowbrick可视化技巧:提升机器学习模型诊断效率 【免费下载链接】yellowbrick Visual analysis and diagnostic tools to facilitate machine learning model selection. 项目地址: https://gitcode.com/gh_mirrors/ye/yellowbrick Yellowbrick是一款强…...
RT-Thread Studio配置避坑:手把手教你为WCH CH32V303工程正确指定GCC12工具链路径
RT-Thread Studio配置避坑:手把手教你为WCH CH32V303工程正确指定GCC12工具链路径 在嵌入式开发中,选择合适的工具链往往能显著提升开发效率和代码质量。对于使用WCH CH32V303这类RISC-V架构MCU的开发者来说,GCC12工具链带来的性能优化和代码…...
详细解析Spring如何解决循环依赖问题蔚
AI训练存储选型的演进路线 第一阶段:单机直连时代 早期的深度学习数据集较小,模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低,吞吐量极高,也就是“数据离…...
python 文件管理库 Path 解析(详细基础)狼
. GIF文件结构 相比于 WAV 文件的简单粗暴,GIF 的结构要精密得多,因为它天生是为了网络传输而设计的(包含了压缩机制)。 当我们用二进制视角观察 GIF 时,它是由一个个 数据块(Block) 组成的&…...
3步快速部署开源驾驶辅助系统FlowPilot
3步快速部署开源驾驶辅助系统FlowPilot 【免费下载链接】flowpilot flow-pilot is an openpilot based driver assistance system that runs on linux, windows and android powered machines. 项目地址: https://gitcode.com/gh_mirrors/fl/flowpilot FlowPilot是一款基…...
