一、Qt图形绘制 
自己在Qt开源社区在自学yafeilinux前辈的《Qt快速入门系列教程》中的图形篇,结合所学的知识,可以做一个涂鸦板实例

二、实现涂鸦板 
1、新建工程mspaint, 基类选择QDialog 
 
2、在dialog.h里面添加如下代码

引入头文件

#include <QDialog>
#include <QPainter>
#include <QPaintEvent>
#include <QMouseEvent>
#include <QPixmap>
#include <QPoint>
#include <QPointF> 函数声明
protected:
void paintEvent(QPaintEvent *);
void mouseReleaseEvent(QMouseEvent *);
void mousePressEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent *); 私有变量
private:
Ui::Dialog *ui;
QPixmap pix;
QPoint lastPoint;
QPoint endPoint;

3、在dialog.cpp添加修改如下代码

构造函数

    Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this); resize(600,500);
pix=QPixmap(200,200);
pix.fill(Qt::white);
} 函数定义 //根据鼠标前后两个指针就能绘制直线
void Dialog::paintEvent(QPaintEvent *){
QPainter pp(&pix);
pp.drawLine(lastPoint,endPoint);
lastPoint=endPoint;
QPainter painter(this);
painter.drawPixmap(0,0,pix);
} //鼠标按下获得开始点
void Dialog::mousePressEvent(QMouseEvent *event){
if(event->button()==Qt::LeftButton){//鼠标左键按下
lastPoint=event->pos();
}
} //当鼠标移动时获得结束点,并更新绘制。
//调用update()函数会执行paintEvent()函数进行重新绘制。
void Dialog::mouseMoveEvent(QMouseEvent *event){
if(event->buttons()&Qt::LeftButton)
{
endPoint=event->pos();
update();//进行绘制
}
} //当鼠标释放时,也进行重新绘制
void Dialog::mouseReleaseEvent(QMouseEvent *event){
if(event->button()==Qt::LeftButton)
{
endPoint=event->pos();
update();
}
}

三、运行结果图

http://blog.csdn.net/yanqianglifei/article/details/51781358

Qt学习(四)—实例涂鸦画板mspaint的更多相关文章

  1. qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果

    应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...

  2. Qt Quick实现的涂鸦程序

    之前一直以为 Qt Quick 里 Canvas 才干够自绘.后来发觉不是,原来还有好几种方式都能够画图! 能够使用原始的 OpenGL(Qt Quick 使用 OpenGL 渲染).能够构造QSGN ...

  3. Qt 学习之路 2(70):进程间通信

    Qt 学习之路 2(70):进程间通信 豆子 2013年11月12日 Qt 学习之路 2 16条评论 上一章我们了解了有关进程的基本知识.我们将进程理解为相互独立的正在运行的程序.由于二者是相互独立的 ...

  4. Qt 学习之路 2(32):贪吃蛇游戏(2)

    Qt 学习之路 2(32):贪吃蛇游戏(2) 豆子 2012年12月27日 Qt 学习之路 2 55条评论 下面我们继续上一章的内容.在上一章中,我们已经完成了地图的设计,当然是相当简单的.在我们的游 ...

  5. Qt 学习之路 2(29):绘制设备

    Qt 学习之路 2(29):绘制设备 豆子 2012年12月3日 Qt 学习之路 2 28条评论 绘图设备是继承QPainterDevice的类.QPaintDevice就是能够进行绘制的类,也就是说 ...

  6. Qt 学习之路 2(27):渐变

    Qt 学习之路 2(27):渐变 豆子 2012年11月20日 Qt 学习之路 2 17条评论 渐变是绘图中很常见的一种功能,简单来说就是可以把几种颜色混合在一起,让它们能够自然地过渡,而不是一下子变 ...

  7. Qt 学习之路 2(3):Hello, world!

     豆子  2012年8月22日  Qt 学习之路 2  107条评论 想要学习 Qt 开发,首先要搭建 Qt 开发环境.好在现在搭建 Qt 开发环境还是比较简单的.我们可以到 Qt 官方网站找到最新版 ...

  8. 【转载】分享一些Qt学习资源,欢迎下载

    资源来源:http://bbs.csdn.net/topics/390358737 经过我一翻整理,把一些我收集到的Qt学习资源分享给大家,主要适合新手,老鸟可以直接忽略我.要说明一下,很多资源都是在 ...

  9. TCP/IP协议学习之实例ping命令学习笔记

    TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详 ...

随机推荐

  1. 蓝牙芯片NRF51822入门学习1:时间管理

    前言 之前辞职找工作的时候发现,很多公司希望招聘蓝牙技术方面的人才,所以干脆丢开LWIP静下心来学习蓝牙技术.原本以为一两星期能基本学会的,谁知道所选的蓝牙芯片nrf51822是个坑货,坑了我一个月. ...

  2. C语音--static变量

    static变量大概是两种情况 在函数里的static变量意味着这个变量的生存期是全局的,你可以想象它实际上就是在函数外声明的, 当然因为可见范围的原因其他函数不能访问它 在函数外的static变量意 ...

  3. 在CentOS上安装FFMPEG和Gstream-ffmpeg

    当我们用CentOS7自带的源时,是yum search不到标题上述的两个相关的包的,而opencv需要用到FFmpeg读取视频文件.这就必须安装了. 可以参考FFMPEG官方给出的文档: http: ...

  4. 阻碍android程序员发展的几个原因

    1应该少看网上的android开发相关技术帖子,一个是错误很多,表达也不清楚,很多都是拷贝来拷贝去的.二个是技术变迁快,很多都过时了,经常看android技术相关帖子,养成了一种惰性,遇到问题不是去看 ...

  5. xsank的快餐 » Python simhash算法解决字符串相似问题

    xsank的快餐 » Python simhash算法解决字符串相似问题 Python simhash算法解决字符串相似问题

  6. 04747_Java语言程序设计(一)_第5章_图形界面设计(一)

    例5.1一个用JFrame类创建窗口的Java应用程序. import javax.swing.*; public class Example5_1 { public static void main ...

  7. c++之 常用类型

    C/C++常用类型的范围 C/C++里常用的类型及表示范围如下表所示: 类型 sizeof 表示范围 说明 char 1 -128 - 127 -2^7 - (2^7 - 1) short 2 -32 ...

  8. VirtualBox 扩展包卸载或安装失败(VERR_ALREADY_EXISTS)

    最近在卸载VirtualBox出现了无法卸载的错误.提示为Failed to install the extension. The installer failed with exit code 1: ...

  9. 一步一步学数据结构之n--n(Prim算法)

    在这里说下最小连通网的Prim算法: 而Kruskal算法,http://blog.csdn.net/nethanhan/article/details/10050735有介绍,大家可以去看下! Pr ...

  10. 解决angular 与django的冲突

    {% block main %} <script type="text/javascript" src="http://cdnjs.cloudflare.com/a ...