Qt 实现涂鸦板三:实现鼠标绘制矩形
.h 文件
#pragma once #include <QtWidgets/QWidget>
#include "ui_xuexi.h" #include "QMouseEvent"
#include "QKeyEvent"
#include "QPainter" class xuexi : public QWidget
{
Q_OBJECT public:
xuexi(QWidget *parent = Q_NULLPTR); void mousePressEvent(QMouseEvent*e); // 按下
void mouseMoveEvent(QMouseEvent*e); // 移动
void mouseReleaseRvent(QMouseEvent*e); // 释放 void paintEvent(QPaintEvent* ); private:
Ui::xuexiClass ui; QPixmap pix;
QPoint lastPoint;
QPoint endPoint; QPixmap tempPix;
bool isDrawing; // 标志是否在绘图
};
.cpp 文件
#include "xuexi.h" xuexi::xuexi(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this); resize(600, 500);
pix = QPixmap(400, 400);
pix.fill(Qt::white); isDrawing = false;
} void xuexi::mousePressEvent(QMouseEvent*e)
{
if (e->button() == Qt::LeftButton)
{
lastPoint = e->pos();
isDrawing = true;
}
} void xuexi::mouseMoveEvent(QMouseEvent*e)
{
if (e->buttons() == Qt::LeftButton)
{
endPoint = e->pos();
update();
}
} void xuexi::mouseReleaseRvent(QMouseEvent* e)
{
if (e->button() == Qt::LeftButton)
{
endPoint = e->pos();
isDrawing = false;
update();
}
} void xuexi::paintEvent(QPaintEvent*)
{
int x, y, w, h;
x = lastPoint.x();
y = lastPoint.y();
w = endPoint.x() - x;
h = endPoint.y() - y; QPainter painter(this);
if (isDrawing)
{
tempPix = pix;
QPainter pp(&tempPix);
pp.drawRect(x, y, w, h);
painter.drawPixmap(0, 0, tempPix);
}
else
{
QPainter pp(&pix);
pp.drawRect(x, y, w, h);
painter.drawPixmap(0, 0, pix);
} }
Qt 实现涂鸦板三:实现鼠标绘制矩形的更多相关文章
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
前言 好长时间没写博文了,今天偷偷懒写篇关于opencv2中鼠标响应操作的文章. 鼠标操作属于用户接口设计,以前一直使用Qt来做,但是如果只需要简单的鼠标,键盘操作,直接调用opencv库的函数也未尝 ...
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
这是两个相关的程序,前者是后者的基础.实际上前一个程序也是在前面博文的基础上做的修改,请参考<在OpenCV中利用鼠标绘制直线> .下面贴出代码. 程序之一,在OpenCV中利用鼠标绘制矩 ...
- 【Qt开发】Qt在QLabel(QWidget)鼠标绘制直线和矩形框
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://devbean.blog.51cto.com/448512/243546 说实话, ...
- OpenCV鼠标画图例程,鼠标绘制矩形
鼠标画矩形: // An example program in which the // user can draw boxes on the screen. // /* License: Oct. ...
- OpenCV 学习笔记(2) 使用鼠标绘制矩形并截取和保存矩形区域图像
http://www.cnblogs.com/lidabo/p/3437587.html 0 效果展示 1工程源码 #include <opencv2/core/core.hpp> # ...
- iOS_Quartz2D之涂鸦板
响应者对象:继承了UIResponder的对象 触摸事件:一根或多根手指: 开始触摸: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent ...
- 重新想象 Windows 8 Store Apps (51) - 输入: 涂鸦板
[源码下载] 重新想象 Windows 8 Store Apps (51) - 输入: 涂鸦板 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 涂鸦板 通过 Poin ...
- Android应用开发实例篇(1)-----简易涂鸦板
链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/03/2378328.html 一.概述 这次要做一个简单的涂鸦板应用,以前在Qt上实现过,突然想 ...
- PPAPI+Skia实现的涂鸦板
在PPAPI插件中使用Skia画图介绍了怎样在PPAPI中使用Skia,文末说回头要提供一个简单的涂鸦板插件,这次我来兑现承诺了. foruok原创,关注微信订阅号"程序视界"可联 ...
- 【Linux开发】【Qt开发】Qt界面键盘、触摸屏、鼠标的响应设置
USB键盘 经过一番搜索,发现对Qt键盘的支持主要关系到两个方面: 1. 键盘类型确定: 4.7以前的Qt版本,如果是PS2圆孔键盘,Qt编译时需加上选项:-qt-kbd-vr41xx(未测试):如果 ...
随机推荐
- 前后端分离项目(七):实现"添加"功能(前端视图)
好家伙,本篇用于测试"添加"接口,为后续"用户注册"功能做铺垫 (完整代码在最后) 我们要实现"添加"功能 老样子我们先来理清一下思路, ...
- Spring使用注解方式进行事务管理
目录 使用步骤: 步骤一.在spring配置文件中引入tx:命名空间 步骤二.具有@Transactional 注解的bean自动配置为声明式事务支持 步骤三.在接口或类的声明处 ,写一个@Trans ...
- 【Azure IoT Hub】从设备端如何向IOT发送海量数据,可以使用从设备到IoT连接的直接传输吗?如何把IoT Hub中的数据存储到Azure Storage中?
问题描述 IoT Hub 从设备端如何向IOT发送海量数据,可以使用从设备到IOT连接的直接传输吗?还是需要另外开启连接.另外,消息路由和上传文件使用的连接是否就是设备到IOT建立的连接?还是需要额外 ...
- ffmpeg 使用记录
这周周末尝试把我硬盘上面的视频文件压缩了一下,但是效果并不理想.其中主要有两个原因, 视频本来就是h264的编码,再重新编码也没啥用,因为限制大小的主要是码率 ffmpeg GPU加速版的h265编码 ...
- python 打包 exe文件
操作步骤: 先安装pyinstaller,在终端中输入pip install pyinstaller即可. 打包程序: pyinstaller --console --onefile 7.py 在di ...
- Djiango视图层和模型层
Djiango 使用教程 目录 Djiango 使用教程 一. 视图层 1.1 HttpResponse,render,redirect 1.2 JsonResponse 1.3 form表单上传文件 ...
- 解决windows11远程连接阿里云Centos7
本地连接CentOs7时报错 Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 网上大部分说的是去修改 vim /etc/ss ...
- typora 目录内添加右键
Typora.reg 这里路径改成自己的 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\sh ...
- WPF之属性
目录 属性 依赖属性(Dependency Property) 依赖属性对内存的使用方式 声明和使用依赖属性 声明依赖属性 使用依赖属性 依赖属性的"属性" 依赖属性的" ...
- Prometheus常用exporter及其常用监控指标
node-exporter常用监控指标 CPU相关指标: node_cpu_seconds_total{mode="idle"}:CPU空闲时间(秒)的总和.这是评估CPU使用率的 ...