Qt之利用事件过滤器在QLabel上画框
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.利用鼠标在所显示的图像/视频中选取ROI区域 2.实时显示鼠标所点击位置处的坐标信息 本文 ...
- Qt实现在QLabel上显示图片并进行线条/矩形框/多边形的绘制
文章目录 前言 一.事件过滤器 二.示例完整代码展示 三.下载链接 总结 前言 本文主要讲述了使用QPainter在QLabel上进行图片的显示,并使用事件过滤器让QLabel捕获QEvent::Pa ...
- linux+Qt 下利用D-Bus进行进程间高效通信的三种方式
linux+Qt 下利用D-Bus进行进程间高效通信的三种方式 原文链接: https://www.cnblogs.com/wwang/archive/2010/10/27/1862552.html ...
- 在QLabel上点击获得的效果
一般说只在button中点击获得事件,作出相应的反应.而往往需要在QLabel上作出点击和触碰的效果. 我用qlabel做出了一个效果,当鼠标碰到label区域,label底下出现一条线,离开后线条消 ...
- 利用tinyproxy在Linux上搭建HTTP Proxy Server
之所以需要用到HTTP Proxy Server并不是为了要***,而是为了让没有公网IP地址的内网主机通过有公网IP地址的外网主机访问Internet.举个例子,阿里云ECS在购买时可以不购买公网I ...
- 利用apache-commons-fileupload写jsp上传文件
利用apache-commons-fileupload写jsp上传文件 需要下载fileupload和beanutils两个包,代码如下. <%@ page language="jav ...
- 利用MultipartFile实现文件上传
利用MultipartFile实现文件上传 在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的Multipar ...
- Qt Creator在外部应用程序上运行Valgrind工具
Qt Creator在外部应用程序上运行Valgrind工具 在外部应用程序上运行Valgrind工具 在外部应用程序上运行Valgrind工具 Qt Creator集成了Valgrind代码分析工具 ...
- Qt Creator在多个平台上运行
Qt Creator在多个平台上运行 在多个平台上运行 在通用远程Linux设备上运行 在QNX设备上运行 排除错误 调试输出无法显示 无法运行,调试或停止应用程序 运行Python项目 在多个平台上 ...
最新文章
- 今日 Paper | 社交媒体谣言检测;连续手语识别;细粒度服装相似性学习;混合图神经网络等
- GraphQL和REST对比时需要注意些什么
- Spring Security 应用详解 集成SpringBoot —— 简单入门
- MATLAB:图像的与、或、非、异或逻辑运算(、|、~、xor)
- SpringBoot集成Mybatis用法笔记
- spring batch_Spring Batch作为Wildfly模块
- 据说这是双11前互联网人的一天~
- 和python哪个容易胖_为什么有些人特别容易胖?
- linux-查找相关-find-locate-grep
- Centos7.6 编译安装heartbeat,及遇到的问题。
- 动态PHP查看新闻,PHP_用文本文件实现的动态实时发布新闻的程序,动态实时发布新闻的程序,可 - phpStudy...
- 完美安装ubuntu
- Eclipse中,lombok安装
- linux结课考试试题,Linux认证考试课后基础试题及答案
- Twrp recovery 编译教程(译文)
- 微信卡劵、微信卡包,必须是认证订阅号或认证服务号
- Java_IOl流_缓冲流_转换流
- ssh登陆报错“IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!“问题原因及解决方法
- python黑客库长安十二时辰 更新_程序员爬取 3 万条评论,《长安十二时辰》槽点大揭秘!...
- android wps 连接wifi密码,怎样在不知道密码的情况下连接WiFi?
热门文章
- java多线程学习-java.util.concurrent详解(五) ScheduledThreadPoolExecutor
- XE中rectangle实现渐变
- [转载]程序员的激情其实是一种痛苦
- Ext Store Proxy Ajax
- ROM存储1/4周期正弦信号构造DDS
- ubuntu忘记密码,忘记root密码的解决方法!【转载】
- jupyter notebook + 服务器中docker 使用配置
- 【SLAM笔记】SLAM概述
- 【OpenCV】复制、切割出图像ROI区域
- php cannot bind port to socket,PHP基于socket实现客户端和服务端通讯功能