2019独角兽企业重金招聘Python工程师标准>>>

第一:对目标对象调用installEventFilter()来注册监视对象(事件过滤器);
第二:重写监视对象的eventFilter()函数处理目标对象的事件。

1、在mainwindows中添加:

public:bool eventFilter(QObject *watched, QEvent *event);
private:bool mouseIsdown;QPointF startPos;QPointF endPos;

2、构造函数中安装事件过滤器:

mouseIsdown = false;
    ui->label->installEventFilter(this);

3、在 mainwindows.cpp中添加

#include <QPainter>
#include <QMouseEvent>
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{if(watched == ui->label ){if(event->type() == QEvent::MouseButtonPress){QMouseEvent *mouseEvent = (QMouseEvent *)event;if(mouseEvent->buttons()&Qt::LeftButton){mouseIsdown = true;startPos = mouseEvent->pos();}}if(event->type() == QEvent::MouseMove){QMouseEvent *mouseEvent=(QMouseEvent *)event;if(mouseIsdown){endPos = mouseEvent->pos();ui->label->update();}}if(event->type() == QEvent::MouseButtonRelease){QMouseEvent *mouseEvent=(QMouseEvent *)event;endPos = mouseEvent->pos();mouseIsdown = false;}if(event->type() == QEvent::Paint){magicTime();QPainter painter(ui->label);QPen pen = painter.pen();pen.setWidth(3);pen.setColor(QColor(173, 255, 47));painter.setRenderHint(QPainter::Antialiasing, true);painter.setPen(pen);QRect rect(startPos.x(),startPos.y(),endPos.x(), endPos.y());painter.drawRect(rect);}}return QMainWindow::eventFilter(watched, event); //将事件传递给父类
}

参考:https://blog.csdn.net/qq_31607215/article/details/53964594

转载于:https://my.oschina.net/u/3919756/blog/1938603

Qt之利用事件过滤器在QLabel上画框相关推荐

  1. 利用鼠标在图像上画框并实时显示鼠标所点击处坐标

    我们在做小型项目的时候,有时为了实现良好的交互,或者更方便实时观察输入数据,通常需要使用到下列几项功能: 1.利用鼠标在所显示的图像/视频中选取ROI区域 2.实时显示鼠标所点击位置处的坐标信息 本文 ...

  2. Qt实现在QLabel上显示图片并进行线条/矩形框/多边形的绘制

    文章目录 前言 一.事件过滤器 二.示例完整代码展示 三.下载链接 总结 前言 本文主要讲述了使用QPainter在QLabel上进行图片的显示,并使用事件过滤器让QLabel捕获QEvent::Pa ...

  3. linux+Qt 下利用D-Bus进行进程间高效通信的三种方式

    linux+Qt 下利用D-Bus进行进程间高效通信的三种方式 原文链接: https://www.cnblogs.com/wwang/archive/2010/10/27/1862552.html ...

  4. 在QLabel上点击获得的效果

    一般说只在button中点击获得事件,作出相应的反应.而往往需要在QLabel上作出点击和触碰的效果. 我用qlabel做出了一个效果,当鼠标碰到label区域,label底下出现一条线,离开后线条消 ...

  5. 利用tinyproxy在Linux上搭建HTTP Proxy Server

    之所以需要用到HTTP Proxy Server并不是为了要***,而是为了让没有公网IP地址的内网主机通过有公网IP地址的外网主机访问Internet.举个例子,阿里云ECS在购买时可以不购买公网I ...

  6. 利用apache-commons-fileupload写jsp上传文件

    利用apache-commons-fileupload写jsp上传文件 需要下载fileupload和beanutils两个包,代码如下. <%@ page language="jav ...

  7. 利用MultipartFile实现文件上传

    利用MultipartFile实现文件上传 在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的Multipar ...

  8. Qt Creator在外部应用程序上运行Valgrind工具

    Qt Creator在外部应用程序上运行Valgrind工具 在外部应用程序上运行Valgrind工具 在外部应用程序上运行Valgrind工具 Qt Creator集成了Valgrind代码分析工具 ...

  9. Qt Creator在多个平台上运行

    Qt Creator在多个平台上运行 在多个平台上运行 在通用远程Linux设备上运行 在QNX设备上运行 排除错误 调试输出无法显示 无法运行,调试或停止应用程序 运行Python项目 在多个平台上 ...

最新文章

  1. 今日 Paper | 社交媒体谣言检测;连续手语识别;细粒度服装相似性学习;混合图神经网络等
  2. GraphQL和REST对比时需要注意些什么
  3. Spring Security 应用详解 集成SpringBoot —— 简单入门
  4. MATLAB:图像的与、或、非、异或逻辑运算(、|、~、xor)
  5. SpringBoot集成Mybatis用法笔记
  6. spring batch_Spring Batch作为Wildfly模块
  7. 据说这是双11前互联网人的一天~
  8. 和python哪个容易胖_为什么有些人特别容易胖?
  9. linux-查找相关-find-locate-grep
  10. Centos7.6 编译安装heartbeat,及遇到的问题。
  11. 动态PHP查看新闻,PHP_用文本文件实现的动态实时发布新闻的程序,动态实时发布新闻的程序,可 - phpStudy...
  12. 完美安装ubuntu
  13. Eclipse中,lombok安装
  14. linux结课考试试题,Linux认证考试课后基础试题及答案
  15. Twrp recovery 编译教程(译文)
  16. 微信卡劵、微信卡包,必须是认证订阅号或认证服务号
  17. Java_IOl流_缓冲流_转换流
  18. ssh登陆报错“IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!“问题原因及解决方法
  19. python黑客库长安十二时辰 更新_程序员爬取 3 万条评论,《长安十二时辰》槽点大揭秘!...
  20. android wps 连接wifi密码,怎样在不知道密码的情况下连接WiFi?

热门文章

  1. java多线程学习-java.util.concurrent详解(五) ScheduledThreadPoolExecutor
  2. XE中rectangle实现渐变
  3. [转载]程序员的激情其实是一种痛苦
  4. Ext Store Proxy Ajax
  5. ROM存储1/4周期正弦信号构造DDS
  6. ubuntu忘记密码,忘记root密码的解决方法!【转载】
  7. jupyter notebook + 服务器中docker 使用配置
  8. 【SLAM笔记】SLAM概述
  9. 【OpenCV】复制、切割出图像ROI区域
  10. php cannot bind port to socket,PHP基于socket实现客户端和服务端通讯功能