1. 头文件

#include <QWidget>
#include <QPainter>
#include <QMouseEvent>
#include <QDebug>class MainWidget : public QWidget
{Q_OBJECTpublic:MainWidget(QWidget *parent = 0);~MainWidget();
private:QPixmap pix;QPoint lastPoint;QPoint endPoint;
protected:void paintEvent(QPaintEvent *event);void mouseMoveEvent(QMouseEvent *event);void mousePressEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent *event);
};

2. cpp文件

#include "mainwidget.h"MainWidget::MainWidget(QWidget *parent): QWidget(parent)
{resize(600, 500);    //窗口大小设置为600*500pix = QPixmap(200, 200);pix.fill(Qt::white);}MainWidget::~MainWidget()
{}void MainWidget::paintEvent(QPaintEvent *event)
{QPainter pp(&pix);                   // 根据鼠标指针前后两个位置就行绘制直线pp.drawLine(lastPoint, endPoint);    // 让前一个坐标值等于后一个坐标值,这样就能实现画出连续的线lastPoint = endPoint;QPainter painter(this);painter.drawPixmap(0, 0, pix);
}void MainWidget::mouseMoveEvent(QMouseEvent *event)
{if (event->buttons() == Qt::LeftButton){endPoint = event->pos();update();}
}void MainWidget::mousePressEvent(QMouseEvent *event)
{if (event->button() == Qt::LeftButton) {lastPoint = event->pos();}
}void MainWidget::mouseReleaseEvent(QMouseEvent *event)
{if (event->button() == Qt::LeftButton){endPoint = event->pos();update();}
}

参考资料:

1. http://shouce.jb51.net/qt-beginning/21.html

2. mouseMoveEvent中判断鼠标状态

涂鸦板练习(20200214)相关推荐

  1. 【Qt】2D绘图之涂鸦板

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 程序设计(基本功能) 04. 程序设计(放大功能) 05. 程序设计(放大功能) 06. 附录 01. 概述 结合前面所学 ...

  2. [Qt教程] 第17篇 2D绘图(七)涂鸦板

    [Qt教程] 第17篇 2D绘图(七)涂鸦板 楼主  发表于 2013-5-2 21:37:41 | 查看: 1255| 回复: 16 涂鸦板 版权声明 该文章原创于Qter开源社区(www.qter ...

  3. UI进阶--Quartz2D和触摸事件的简单使用:简易涂鸦板

    需求:实现一个简易的涂鸦板应用,使用鼠标在涂鸦板内拖动即可进行涂鸦,点击保存按钮,可以把完成的涂鸦保存,点击回退按钮可以向后退回一步,点击清空可以让涂鸦板清空. 实现步骤: 1.布局storyboar ...

  4. 开始新的blog之旅--flash3,0涂鸦板保存,撤销功能

    一直以来都是在百度写的博客,今天不知道百度是哪抽风.居然把我的博客给封了,上贴吧去发泄一番,结果帖子都给删了. 不得不说你百度厉害,你自己犯的错误.让我们这些用户跟着受罪.我看今天很多博客都被封了,都 ...

  5. H5小游戏 - canvas涂鸦板

    H5小游戏 - 涂鸦板 效果截图: html代码如下: <!DOCTYPE html> <html><head><meta charset="utf ...

  6. android 简易涂鸦板,canvas实现的简易涂鸦板效果

    用canvas实现的简易涂鸦板效果,用鼠标点击在画布上随意涂鸦 涂鸦 *{ margin: 0; padding: 0; } #canvas1{ box-shadow: 0 5px 40px blac ...

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

    一.概述 这次要做一个简单的涂鸦板应用,以前在Qt上实现过,突然想到要把它在Android上实现,呵呵,既简单又有趣. 二.实现 新建工程MyWall,修改/res/layout/main.xml文件 ...

  8. HTML5实现涂鸦板

    最近闲的,看了看html5,强大的绘图功能让我惊奇,于是,写了个小玩意---涂鸦板,能实现功能有:画画,改色,调整画笔大小 html5的绘图可以分为点,线,面,圆,图片等,点和线,这可是所有平面效果的 ...

  9. 电脑PHP动画制作画板,涂鸦板简单实现 Html5编写属于自己的画画板

    这篇文章主要教大家如何使用Html5编写属于自己的画画板,进行绘画.调整颜色等操作,感兴趣的小伙伴们可以参考一下 最近了解到html5强大的绘图功能让我惊奇,于是,写了个小玩意---涂鸦板,能实现功能 ...

  10. Android小程序-涂鸦板

    最近android课老师布置了一个课后作业,是实现android涂鸦板的功能, 然后自己写了一个简单的涂鸦板,可以实现选择颜色.尺寸.清屏的功能. 首先是效果图: 主要是使用Canvas和Paint来 ...

最新文章

  1. linux中使用yum安装主程序包,linux使用yum对程序包管理相关知识
  2. randomAccessFile
  3. 蚂蚁金服面试经历-临场发挥
  4. C#调用浏览器的原理及实现浅析
  5. numpy矩阵计算GPU加速库:cupy
  6. 请查收!深度学习超详细发展路线大公开!
  7. Yuhao and a Parenthesis
  8. c语言源程序文件.c如何保存,急求如何将下列C语言程序数据存储到文件中?
  9. 如何让程序员变得没朋友
  10. 浏览器解析html全过程详解
  11. 获取微信的access_tokey,处理json格式的数据
  12. 计算机网络南京邮电大学,南京邮电大学计算机网络.docx
  13. 奥多朗WIFI 插座
  14. 重磅开源!平安产险提出TableMASTER:表格识别大师
  15. python 回溯法 01背包问题_01背包问题(回溯法)python实现
  16. sencha touch总结
  17. hashtab:为文件属性添加一个数字指纹
  18. 【设计模式11】备忘录和解释器模式 SpelExpressionParser
  19. 一种时空无监督的事故检测方法
  20. MATLAB图形加标注的基本方法入门简介

热门文章

  1. boost::units模块测试元函数 is_unit, is_quantity, is_dimension_list ....
  2. boost::units模块实现使用自动前缀的简要示例
  3. boost::mp11::mp_inherit相关用法的测试程序
  4. boost::math模块非有限信号 NaN 环回测试
  5. boost::math::arcsine用法的测试程序
  6. Boost:双图bimap分配的测试程序
  7. OpenCV阈值范围Threshold inRange的实例(附完整代码)
  8. Qt Creator从Blender导出3D资产
  9. c++使用Vigenere加解密文本的算法(附完整源码)
  10. QT的QHoverEvent类的使用