当前位置: 首页 > news >正文

自定义类TMyLabel继承自QLabel ,实现mouseDoubleClickEvent

自定义类TMyLabel ,继承自QLabel 

TMyLabel 中重新实现了 event 方法,重写了mouseDoubleClickEvent 发射信号

在主窗体中放入TMyLabel组件,将TMyLabel  mouseDoubleClickEvent 信号,  绑定到实现方法do_doubleClick()槽函数

TMyLabel.h

#ifndef TMYLABEL_H
#define TMYLABEL_H#include <QLabel>
//引用鼠标事件 鼠标双击事件mouseDoubleClickEvent才能自动带出来参数
#include <QMouseEvent>class TMyLabel : public QLabel
{Q_OBJECT
public:// TMyLabel();TMyLabel(QWidget *parent=nullptr);//重写构造函数bool event(QEvent *e);//重写event()函数
protected:void mouseDoubleClickEvent(QMouseEvent *event);//重写鼠标的双击事件
signals:void doubleClick();//自定义信号发射函数};#endif // TMYLABEL_H

TMyLabel.cpp

#include "tmylabel.h"// TMyLabel::TMyLabel(QWidget *parent): {}
TMyLabel::TMyLabel(QWidget *parent):QLabel(parent)
{this->setAttribute(Qt::WA_Hover,true);//必须设置这个属性,鼠标才能有Hover事件
}bool TMyLabel::event(QEvent *e)
{if(e->type()==QEvent::HoverEnter){//鼠标移入时,将调色板的字体颜色设置为红色QPalette palet=this->palette();palet.setColor(QPalette::WindowText,Qt::red);this->setPalette(palet);}else if(e->type()==QEvent::HoverLeave)//鼠标移出{//鼠标移出的时候 颜色再变回黑色QPalette palet = this->palette();palet.setColor(QPalette::WindowText,Qt::black);this->setPalette(palet);}return QLabel::event(e);//执行父类的的event() 执行父类要执行的事情
}void TMyLabel::mouseDoubleClickEvent(QMouseEvent *event)
{Q_UNUSED(event);emit doubleClick();//发射信号  用来父组件连接到执行槽
}

主窗体设计 

主窗体 TMyLableMouseMoveExample.h

#ifndef TMYLABLEMOUSEMOVEEXAMPLE_H
#define TMYLABLEMOUSEMOVEEXAMPLE_H#include <QWidget>
#include <QMouseEvent>namespace Ui {
class TMyLableMouseMoveExample;
}class TMyLableMouseMoveExample : public QWidget
{Q_OBJECTpublic:explicit TMyLableMouseMoveExample(QWidget *parent = nullptr);~TMyLableMouseMoveExample();protected:void mouseDoubleClickEvent(QMouseEvent *event);
private slots:void do_doubleClick();private:Ui::TMyLableMouseMoveExample *ui;
};#endif // TMYLABLEMOUSEMOVEEXAMPLE_H

主窗体TMyLableMouseMoveExample.cpp

#include "tmylablemousemoveexample.h"
#include "ui_tmylablemousemoveexample.h"TMyLableMouseMoveExample::TMyLableMouseMoveExample(QWidget *parent): QWidget(parent), ui(new Ui::TMyLableMouseMoveExample)
{ui->setupUi(this);connect(ui->lab,SIGNAL(doubleClick()),this,SLOT(do_doubleClick()));
}TMyLableMouseMoveExample::~TMyLableMouseMoveExample()
{delete ui;
}void TMyLableMouseMoveExample::mouseDoubleClickEvent(QMouseEvent *event)
{Q_UNUSED(event);ui->lab->setText("窗口被双击了");ui->lab->adjustSize();
}void TMyLableMouseMoveExample::do_doubleClick()
{ui->lab->setText("信号槽响应:TMyLabel被双击了");ui->lab->adjustSize();
}

效果

http://www.lryc.cn/news/395180.html

相关文章:

  • 逻辑回归模型(非回归问题,而是分类问题)
  • qt hasPendingDatagrams() 函数
  • 数据结构第08小节:双端队列
  • Python骨架肌体运动学数学模型
  • 二叉树的序列化和反序列化(Java)
  • Java中的泛型类
  • 57、Flink 的项目配置概述
  • 零基础自学爬虫技术该从哪里入手?
  • Vue.js 基础入门指南
  • 山泰科技集团陈玉东:争当数字化时代的知识产权卫士
  • WBCE CMS v1.5.2 远程命令执行漏洞(CVE-2022-25099)
  • 鸿蒙语言基础类库:【@ohos.url (URL字符串解析)】
  • 【AutoencoderKL】基于stable-diffusion-v1.4的vae对图像重构
  • 《警世贤文》摘抄:守法篇、惜时篇、修性篇、修身篇、待人篇、防人篇(建议多读书、多看报、少吃零食多睡觉)
  • vue2+element-ui新增编辑表格+删除行
  • Day05-组织架构-角色管理
  • 【LLM】二、python调用本地的ollama部署的大模型
  • 20240708 每日AI必读资讯
  • 为什么KV Cache只需缓存K矩阵和V矩阵,无需缓存Q矩阵?
  • VS code修改底部的行号的状态栏颜色
  • 【鸿蒙学习笔记】MVVM模式
  • 端、边、云三级算力网络
  • java —— JSP 技术
  • 【Python学习笔记】菜鸟教程Scrapy案例 + B站amazon案例视频
  • Pycharm的终端(Terminal)中切换到当前项目所在的虚拟环境
  • Nginx 高效加速策略:动静分离与缓存详解
  • Unity3D 游戏摇杆的制作与实现详解
  • 从nginx返回404来看http1.0和http1.1的区别
  • MySQL 代理层:ProxySQL
  • 异步主从复制