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

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

http://www.xdnf.cn/news/13457.html

相关文章:

  • [灵感源于算法] 链表类问题技巧总结
  • 【大模型训练】中短序列attention 和MOE层并行方式(二)
  • 如何在多任务环境中设定清晰的项目优先级?
  • 多面体基准测试集PolyBench
  • 前端~三维地图(cesium)点位聚合
  • 从零打造前沿Web聊天组件:从设计到交互
  • TikTok在英国用户量达3000万
  • 增强自注意力机制CeAtt,增强局部细节!
  • Scrapy爬虫框架:数据采集的瑞士军刀(附实战避坑指南)!!!
  • 如何开始HarmonyOS 5与Godot引擎融合开发?
  • 代码随想录训练营二十六天| 654.最大二叉树 617.合并二叉树 700.二叉搜索树的搜索 98.验证二叉搜索树
  • 如何将照片从Android传输到Mac?
  • IntelliJ IDEA 豆沙绿护眼色设置
  • defineAsyncComponent
  • STM32实战:智能家居控制面板设计方案
  • 2024年12月6级第二套第一篇
  • Android11三网共存
  • Nuxt3 中使用 pnpm 安装的 NuxtImg 使用会提示找不到图片
  • 加性同态加密的原理与函数解析
  • 【凌智视觉模块】rv1106 部署 ppocrv4 检测模型 rknn 推理
  • 在 Azure 机器学习中注册 MLflow 模型
  • Postman核心功能解析
  • React Native 跨平台开发:iOS 与安卓原生模块高效交互
  • AR互动协助:开启企业协作新纪元​
  • 【开源解析】:Python打造专业级USB安全弹出工具(附完整源码)
  • 计算机体系结构中的MPU是什么?
  • spring:使用注解@获取第三方bean实例
  • MATLAB-磁偶极子的空间磁场强度仿真
  • Linux:多线程---线程控制(线程创建线程等待线程终止)
  • DSPy Prompt自动生成最佳实践