Qt事件过滤

1.相关说明

监控鼠标进入组件、出组件、点击组件、双击组件的事件,需要重写eventFilter函数

2.相关界面

3.相关代码

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->labSC->installEventFilter(this);
    ui->labDC->installEventFilter(this);
}

Widget::~Widget()
{
    delete ui;
}


bool Widget::eventFilter(QObject *watched, QEvent *event)
{
    if(watched == ui->labSC){
        if(event->type() == QEvent::Enter){
            ui->labSC->setStyleSheet("background-color:rgb(170,255,255)");
        }else if(event->type() == QEvent::Leave){
            ui->labSC->setText("单击");
            ui->labSC->setStyleSheet("");
        }else if(event->type() == QEvent::MouseButtonPress){
            ui->labSC->setText("button pressed");
        }else if(event->type() == QEvent::MouseButtonRelease){
            ui->labSC->setText("button released");
        }
    }
    if(watched == ui->labDC){
        if(event->type() == QEvent::Enter){
            ui->labDC->setStyleSheet("background-color:rgb(85,255,255)");
        }else if(event->type() == QEvent::Leave){
            ui->labDC->setText("双击");
            ui->labDC->setStyleSheet("");
        }else if(event->type() == QEvent::MouseButtonDblClick){
            ui->labDC->setText("button double clicked");
        }
    }
    if(watched == ui->labNo){
        if(event->type() == QEvent::Enter){
            ui->labNo->setStyleSheet("background-color:rgb(85,255,255)");
        }else if(event->type() == QEvent::Leave){
            ui->labNo->setText("No");
            ui->labNo->setStyleSheet("");
        }
    }
    return QWidget::eventFilter(watched, event);
}
相关推荐
晴天的雨.9922 小时前
【C++算法】和为s的两个数
开发语言·数据结构·c++·算法
IvanCodes7 小时前
Python 数据处理(十三):JSON、CSV 与数据序列化
开发语言·python
aramae8 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
qq_25183645711 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
郑州光合科技余经理12 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
知识分享小能手12 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
+VX:Fegn089512 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
阿里嘎多学长13 小时前
2026-09-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
江湖人称菠萝包14 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter9-Qt Charts
笔记·qt·qt5
扶尔魔ocy14 小时前
【QT android】环境安装及第一个QT项目
qt·andriod开发