Qt学习(四)—实例涂鸦画板mspaint
2016-07-18 20:59
393 查看
一、Qt图形绘制
自己在Qt开源社区在自学yafeilinux前辈的《Qt快速入门系列教程》中的图形篇,结合所学的知识,可以做一个涂鸦板实例
二、实现涂鸦板
1、新建工程mspaint, 基类选择QDialog
2、在dialog.h里面添加如下代码
3、在dialog.cpp添加修改如下代码
三、运行结果图
http://blog.csdn.net/yanqianglifei/article/details/51781358
自己在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第一天学习
- qt5集成libcurl实现tftp和ftp的方法之三:搭建FTP时,当ftpServer端默认登录的目录不是根目录/时,有一个bug会产生的解决办法
- Qt之图标切分与合并(关键是使用QPixmap的copy函数来拷贝整张图片的某个区域)
- qt day1
- Qt-crateor 编译 ROS
- 简单的QT绘图程序(把全部的点都记录下来,然后在paintEvent里使用drawLine函数进行绘制,貌似效率很低。。。)
- VS_QT中配置qDebug输出
- VS2008下搭建QT环境
- QT5程序打包发布
- QT各种乱码解决方案
- 从无到有,从动态链编到静态链编,与清华大学合作完成了一个Qt项目
- QT中QtConcurrent创建并行线程的方法
- Qt::WindowFlags枚举类型解析
- QTreeWidget树形控件设计
- Qt产生随机数
- windows10 qt5 mingw32编译cryptopp563
- Qt5.6windows打包发布
- IOT_MQTT_CoAP_XMPP
- Qt: 容器类和迭代器类、foreach关键字
- qt之设置快捷方式