当前位置: 首页 > news >正文

QT绘制会动的蚂蚁线

主要思路

设置DashPattern,线的样式

然后通过定时器不停地改变DashOffset,就会导致蚂蚁线每次从线的不同的起点绘制,产生动起来的效果

主要接口

设置线条样式

void QPen::setDashPattern(const QVector<qreal> &pattern)

参数pattern的个数必须为偶数

其中奇数位置表示横线的长度,偶数位置表示空白间隙的长度

比如{1,3,1,3}

则表示先是1px的破折线,然后是3px的空白,再是1px的破折线,然后是3px的空白

如下:

-   -   结束。

设置线条绘制偏移

void QPen::setDashOffset(qreal offset)

offset的单位是px;

改变这个值就会使得线条的绘制从线的不同起点绘制

比如{1,3,1,3}

-   -   结束。

比如这里设为1,那么上面的就会为

   -   -结束。  

可以看到绘制起点是线的样式往后偏移了1px 

通常前面pattern设置的总长度为1个周期,比如{1,3,1,3},那么1个周期就是1+3+1+3=8。即偏移设为8的时候,就相当于将偏移设为0

举例:

 

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPainter>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr) : QWidget(parent){startTimer(100);//开启内部的定时器,间隔越短,蚂蚁线动的越快}~Widget()=default;
protected:void paintEvent(QPaintEvent* ev) override{QPainter p(this);QPen pen;pen.setWidth(3);pen.setColor(Qt::red);pen.setDashPattern({2,3,2,3});//一个周期为2px的线段,3px的空白,2px的线段,3px的空白pen.setDashOffset(offset);//定时器事件中改变这个偏移值p.setPen(pen);p.translate(this->rect().center());p.drawRect(0,0,200,200);}void timerEvent(QTimerEvent* ev) override{offset+=1.0;//这个步长越大蚂蚁线动的越快if(offset==10)//一个周期结束后,偏移置为0,周期长度就是pattern中指定的总和,这里是2+3+2+3{offset=0;}update();//刷新}private:qreal offset=0;};
#endif // WIDGET_H

相关文章:

  • AI服务代码说明文档
  • STM32学习之不同FLASH的芯片启动文件选择规则
  • 数据冗余对企业运营的隐性成本
  • 解决idea创建SpringBoot项目,会自动创建.git文件导致commit两极分化的现象。
  • 浅析hashmap
  • Linux驱动:framebuffer应用层实践
  • 西门子 SINAMICS S200伺服,重塑汽车焊接工艺新标准
  • 电子电路原理第十八章(有源滤波器)
  • 编程项目学习,怎么快速掌握
  • MySQL中外键约束详解 外键在表关系维护中的作用
  • 12.ack,ACK 的区别与含义
  • 从编辑到安全设置: 如何满足专业文档PDF处理需求
  • vue3 + element plus 实现表格列头、行的添加及拖动换位
  • Java NIO 面试全解析:9大核心考点与深度剖析
  • 三维自动光学检测-3D扫描扇叶尺寸检测设备-中科米堆
  • 手阳明大肠经之温溜穴
  • 浅谈HDFS--基本操作
  • 「AI产业」| 《2025中国低空经济商业洞察报告(商业无人机应用篇)》
  • C++11的特性上
  • 【算法篇】逐步理解动态规划模型6(回文串问题)
  • 苏州网络平台公司/seopeix
  • 邯郸信息港交友/真实有效的优化排名
  • 网站开发 属于研发费用吗/百度关键词搜索
  • wordpress输入命令/榆林市网站seo
  • 用phpmysql做网站/营销策略包括哪些内容
  • 简单网页制作模板代码/南宁seo优化公司