博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
qt 5 小练习 简易画板
阅读量:5107 次
发布时间:2019-06-13

本文共 1164 字,大约阅读时间需要 3 分钟。

如何在窗口上画线?用一根根线来拼凑图案呢?

 

想必大家都知道点的集合是线,而线的集合就是很多线啦,用线的集合我们能拼凑出许许多多的图案。于是我就要记录自己跟着老师的学习之路啦;

 

既然有集合的话,势必要用到QVector,这是一个QT提供给我们的容器,而QVector<QPoint> line; 则表示的就是一条线,那我们怎么表示线的集合呢? QVector< QVector<QPoint> > lines;

 

首先,我们从简单做起,在画板上画一条线,我们都知道画线的话,有起点,终点,也有路径,起点是鼠标压下去的时候,所以我们用到的是void mousePressEvent(QMouseEvent *e); 当然用之前肯定要加上头文件QMouseEvent,同理,路径是鼠标移动产生的,所以我们用到void mouseMoveEvent(QMouseEvent *e); 而终点则是我们鼠标松开时产生的,

void mouseReleaseEvent(QMouseEvent *e);  

 

 

那么我们如何来获取点的坐标呢? line.appand(e->pos()); 而我们要注意的是,移动产生的每个点都要记录,所以要实时更新存到容器中,用update();函数,然后用void painEvent(QPainEvent *)来打印出来 QPainter p(this);    for(int i=0;i< line.size()-1 ;i++)   p.drawLine(line.at(i),line.at(i+1)); 把线上的每一个点连接起来 

 

当我们画很多线条时,我们必须把每一根线都当做最后一根线,因为你随时可能结束,只要记录最后一根线的坐标即可,当我们按下左键的时候,我们就必须开始划线,于是我们用到 lines.append(line); 先把线存在线的数组里 ,然后引用线当做最后一根线,QVector<QPoint> &lastline = lines.last();   记录他的坐标 lastline.append(e->pos()); 把后两句代码复制到其余两个函数中。关于显示,则用两个for循环,第一个控制输出多少条线,第二个控制这条线上的点。

for(int i=0;i< lines.size() ;i++)

{

   const QVector<QPoint> & line = lines.at(i);

    for(int j=0;j<line.size()-1;j++) 

  {

     p.drawLine(line.at(j),line.at(j+1));

   }

}

 

此文章属于博主原创,如需转载,请注明出处

作者 : Ten10

转载于:https://www.cnblogs.com/Ten10/p/Ten14.html

你可能感兴趣的文章
Djiango Rest Framwork
查看>>
软件使用[07]
查看>>
输入地址到页面显示发生了写什么?
查看>>
java ee 插件_Eclipse安装Web/JavaEE插件、Eclipse编写HTML代码
查看>>
mongodb java 事务_MongoDB4.0支持事务管理
查看>>
java修改文件只读_java修改文件为只读权限
查看>>
java里equal与equals_Java中关于==与equal和equals的区别
查看>>
java pack unpack_pack/unpack函数与二进制
查看>>
mysql 大牛博客_python爬虫抓取51cto博客大牛的文章保存到MySQL数据库
查看>>
java ee容器_Java EE容器
查看>>
java小程序视频_「小程序JAVA实战」小程序视频组件与api介绍(51)
查看>>
nqueens java_Matlab NQueens算法递归
查看>>
python的常用语句_python基础常用语句与字符串
查看>>
java int 数据类型_Java中的数据类型
查看>>
shell java cp_使用PowerShell远程运行Java
查看>>
java applet怎么传参_我可以将复杂参数传递给Java Applet吗?
查看>>
java三角形代码_java判断是否是三角形的方法(附代码)
查看>>
java的c import_关于编译(javac),import,package的再理解
查看>>
js原生popup_js来实现popup的生成,带钟罩,可移动popup,点击body可自动消失
查看>>
idea写java webservice_WebService系列之Idea 创建Webservice server 和 WebService Client
查看>>