Qt学习(四)---实例涂鸦画板mspaint
2016-06-29 10:54
253 查看
Qt学习(四)—实例涂鸦画板mspaint
一、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(); } }
三、运行结果图
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- 交换机升级排障实例
- sql2008启动代理未将对象应用到实例解决方案
- C#实现图形位置组合转换的方法
- C#实现判断图形文件格式的方法
- Ajax教程实例详解
- C#实现图形路径变换的方法
- 初识JQuery 实例一(first)
- JQuery入门基础小实例(1)
- Jquery具体实例介绍AJAX何时用,AJAX应该在什么地方用
- 一个小助手批处理实例代码
- Qt定时器和随机数详解
- XStream使用方法总结附实例代码
- asp.net得到本机数据库实例的两种方法代码
- php生成图形验证码几种方法小结
- C++多继承同名隐藏实例详细介绍
- PHP入门学习的几个不错的实例代码
- CentOS的图形安装及初始环境设置教程