.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 实现涂鸦板三:实现鼠标绘制矩形的更多相关文章

  1. opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像

    前言 好长时间没写博文了,今天偷偷懒写篇关于opencv2中鼠标响应操作的文章. 鼠标操作属于用户接口设计,以前一直使用Qt来做,但是如果只需要简单的鼠标,键盘操作,直接调用opencv库的函数也未尝 ...

  2. 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域

    这是两个相关的程序,前者是后者的基础.实际上前一个程序也是在前面博文的基础上做的修改,请参考<在OpenCV中利用鼠标绘制直线> .下面贴出代码. 程序之一,在OpenCV中利用鼠标绘制矩 ...

  3. 【Qt开发】Qt在QLabel(QWidget)鼠标绘制直线和矩形框

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://devbean.blog.51cto.com/448512/243546 说实话, ...

  4. OpenCV鼠标画图例程,鼠标绘制矩形

    鼠标画矩形: // An example program in which the // user can draw boxes on the screen. // /* License: Oct. ...

  5. OpenCV 学习笔记(2) 使用鼠标绘制矩形并截取和保存矩形区域图像

    http://www.cnblogs.com/lidabo/p/3437587.html 0 效果展示 1工程源码 #include <opencv2/core/core.hpp>   # ...

  6. iOS_Quartz2D之涂鸦板

    响应者对象:继承了UIResponder的对象 触摸事件:一根或多根手指: 开始触摸: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent ...

  7. 重新想象 Windows 8 Store Apps (51) - 输入: 涂鸦板

    [源码下载] 重新想象 Windows 8 Store Apps (51) - 输入: 涂鸦板 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 涂鸦板 通过 Poin ...

  8. Android应用开发实例篇(1)-----简易涂鸦板

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/03/2378328.html 一.概述 这次要做一个简单的涂鸦板应用,以前在Qt上实现过,突然想 ...

  9. PPAPI+Skia实现的涂鸦板

    在PPAPI插件中使用Skia画图介绍了怎样在PPAPI中使用Skia,文末说回头要提供一个简单的涂鸦板插件,这次我来兑现承诺了. foruok原创,关注微信订阅号"程序视界"可联 ...

  10. 【Linux开发】【Qt开发】Qt界面键盘、触摸屏、鼠标的响应设置

    USB键盘 经过一番搜索,发现对Qt键盘的支持主要关系到两个方面: 1. 键盘类型确定: 4.7以前的Qt版本,如果是PS2圆孔键盘,Qt编译时需加上选项:-qt-kbd-vr41xx(未测试):如果 ...

随机推荐

  1. 前后端分离项目(七):实现"添加"功能(前端视图)

    好家伙,本篇用于测试"添加"接口,为后续"用户注册"功能做铺垫   (完整代码在最后) 我们要实现"添加"功能 老样子我们先来理清一下思路, ...

  2. Spring使用注解方式进行事务管理

    目录 使用步骤: 步骤一.在spring配置文件中引入tx:命名空间 步骤二.具有@Transactional 注解的bean自动配置为声明式事务支持 步骤三.在接口或类的声明处 ,写一个@Trans ...

  3. 【Azure IoT Hub】从设备端如何向IOT发送海量数据,可以使用从设备到IoT连接的直接传输吗?如何把IoT Hub中的数据存储到Azure Storage中?

    问题描述 IoT Hub 从设备端如何向IOT发送海量数据,可以使用从设备到IOT连接的直接传输吗?还是需要另外开启连接.另外,消息路由和上传文件使用的连接是否就是设备到IOT建立的连接?还是需要额外 ...

  4. ffmpeg 使用记录

    这周周末尝试把我硬盘上面的视频文件压缩了一下,但是效果并不理想.其中主要有两个原因, 视频本来就是h264的编码,再重新编码也没啥用,因为限制大小的主要是码率 ffmpeg GPU加速版的h265编码 ...

  5. python 打包 exe文件

    操作步骤: 先安装pyinstaller,在终端中输入pip install pyinstaller即可. 打包程序: pyinstaller --console --onefile 7.py 在di ...

  6. Djiango视图层和模型层

    Djiango 使用教程 目录 Djiango 使用教程 一. 视图层 1.1 HttpResponse,render,redirect 1.2 JsonResponse 1.3 form表单上传文件 ...

  7. 解决windows11远程连接阿里云Centos7

    本地连接CentOs7时报错   Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 网上大部分说的是去修改 vim /etc/ss ...

  8. typora 目录内添加右键

    Typora.reg 这里路径改成自己的 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\sh ...

  9. WPF之属性

    目录 属性 依赖属性(Dependency Property) 依赖属性对内存的使用方式 声明和使用依赖属性 声明依赖属性 使用依赖属性 依赖属性的"属性" 依赖属性的" ...

  10. Prometheus常用exporter及其常用监控指标

    node-exporter常用监控指标 CPU相关指标: node_cpu_seconds_total{mode="idle"}:CPU空闲时间(秒)的总和.这是评估CPU使用率的 ...