运行截图如下:

代码如下:

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);bool eventFilter(QObject *watched, QEvent *event);~Widget();private:Ui::Widget *ui;
};#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QMouseEvent>
#include <QDebug>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);ui->blueLabel->installEventFilter(this);ui->redLabel->installEventFilter(this);ui->greenLabel->installEventFilter(this);this->setWindowTitle("CSDN IT1995");
}bool Widget::eventFilter(QObject *watched, QEvent *event){if(watched==ui->blueLabel){QMouseEvent *mouseEvent=static_cast<QMouseEvent*>(event);if(mouseEvent->button()==Qt::RightButton){ui->blueLabel->setStyleSheet("color:blue");}if(mouseEvent->button()==Qt::LeftButton){ui->blueLabel->setStyleSheet("color:black");}}if(watched==ui->redLabel){QMouseEvent *mouseEvent=static_cast<QMouseEvent*>(event);if(mouseEvent->button()==Qt::RightButton){ui->redLabel->setStyleSheet("color:red");}if(mouseEvent->button()==Qt::LeftButton){ui->redLabel->setStyleSheet("color:black");}}if(watched==ui->greenLabel){QMouseEvent *mouseEvent=static_cast<QMouseEvent*>(event);if(mouseEvent->button()==Qt::RightButton){ui->greenLabel->setStyleSheet("color:green");}if(mouseEvent->button()==Qt::LeftButton){ui->greenLabel->setStyleSheet("color:black");}}return false;
}Widget::~Widget()
{delete ui;
}

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

Qt工作笔记-时QLabel具有点击事件(使用EventFilter)相关推荐

  1. Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包

    原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...

  2. QT 如何实现QLabel的点击事件

    默认情况下,QLabel是不支持点击事件的,要实现QLabel的点击事件,一般有两种方式: 1.继承QLabel,重写鼠标点击事件,通过发送信号与父窗体实现通讯 ClickableLabel.hpp ...

  3. QT:自定义QLabel实现点击事件

    实现QLabel点击事件,及自定义对话框@TOC 实现QLabel点击事件 我们经常会遇到,点击QLabel弹出一个Dialog进行数据的更新,但是QT本身的QLabel没有clicked事件,这时需 ...

  4. QT编程 之 为Label添加点击事件

    在使用QT编程过程中发现QLabel没有点击事件,很多想法就不能很好的实现.经过搜索和实践,分享一个兼容性更好,更灵活的方法- - - -重写QLabel.简单的说就是写一个子类,继承自QLabel, ...

  5. QT学习笔记(七):定时器事件的3种常用使用方式

    QT学习笔记(七):定时器事件的2种常用使用方式 Qt中定时器的使用有2种方法:一种是使用QObject类提供的定时器通过重载 timerEvent 事件处理过程函数,一种就是使用QTimer类. 其 ...

  6. Qt工作笔记-html做界面时,QFileInfo小技巧,获取前端页面

    目录 背景 演示及代码 总结 背景 有的时候要调用三方的库,能够比较简单的实现一些酷炫的效果.这里特别是前端的酷炫效果! 如果在Qt中,某个地方,能小范围使用前端Qt的效果,辣么,将会是一个多么有意思 ...

  7. Qt工作笔记-Qt移植到Linux上时提升窗口部件大小写问题(VS上存在的问题)

    目录 理论 模拟问题 理论 在Windows里面那些.h文件是不区分大小写的,但在Linux上是区分大小写的,这也就是为什么用VS去创建一个类的时候,这个类的类名会和.h文件一样,而用Qt Creat ...

  8. Qt工作笔记-QMap查找时要注意的问题(使用contains)

    如下有问题的代码: #include <QCoreApplication> #include <QMap> #include <QDebug>int main(in ...

  9. Qt工作笔记-把QTableWidget数据存为XML,启动时加载XML

    运行截图如下: 添加好数据后保存: 此时保存的XML,如下图: 程序运行时会加载这些xml文件. 代码如下: widget.h #ifndef WIDGET_H #define WIDGET_H#in ...

最新文章

  1. 两个经典递归问题:菲波那契数列 + 汉诺塔
  2. 程序开发中那些莫名奇妙的bug
  3. bootstrap-table表格插件的使用案例
  4. 服务器win2008修复安装,Win2008 R2迁移实战之迁移工具安装
  5. Linux Vim多窗口编辑,Vim打开多个窗口方法详解
  6. Network下方什么请求也没有_今日头条上传图片时设置封面图报像素低的原因是什么...
  7. quartz mysql 初始化_quartz scheduler 从数据库初始化
  8. R语言 plot()函数 基础用法
  9. android 缩放视图,当容器视图缩放为centerInside时,在android imageview中找到位图的位置...
  10. Matplotlib 中文用户指南 3.5 密致布局指南
  11. The P4 Language Specification v1.0.2 Parser
  12. ubuntu上 grafana + influxdb + telegraf 安装配置
  13. 计算机名会影响电脑网络吗,电脑接网线会比连WiFi网速快吗【详细介绍】
  14. primitive types
  15. 台达伺服B2 调机杂说
  16. Session销毁方式
  17. Jetson开发实战记录(二):Jetson Xavier NX版本区别以及烧录系统
  18. 【深度学习】线性分类器 - 上
  19. 15种方法活力一整天
  20. Python中的turtle.right()方法的用法示例

热门文章

  1. 做一个程序员,是不是“努力就会成功”?现实残酷但又必须面对!
  2. 企业数字化转型过程中,如何真正把数据用起来、用的对、用的好?
  3. 顺便抹了下眼眶的飞鸽传书官方网站
  4. 还有那个bspider不知道哪里的飞鸽传书
  5. 飞鸽传书 v2.51 Build 320 多国语言版
  6. Windows XP下Service的编程入门[1]
  7. 水滴石穿C语言之声明的语法
  8. 30岁程序员吐槽:一分钟只能赚3.3元,混得太差!算出月薪后我服了
  9. 醒醒吧!送给那些盲目自学的人
  10. html无序列表中的正方形点点,CSS 有序或者无序列表的前面的标记 list-style-type 属性的实现...