一、前言
这期作品其实最初的时候,有做过,不过当时做的时候,配图花了很长时间,手搓痕迹较重。在某站上曾经手搓上传过这个作品的出版,后期大家感兴趣可以去查看,这里不再重复述说了。然后现在有了智能小助手之后,这个工作效率就升上来了。至少在炫酷感方向上,我们的方向不再执着于美不美丽,漂不漂亮了,更多的只要做程序化的动作。
下面聊下本期的作品,本文基于一个真实跑在 Qt Widgets 里的水泥厂 DCS 组态画面,主要还是矢量绘制、流体动画、定时器调度这几件事。
这期的技术栈方向依然是我们的老演员:C++、QT、QPainter
二、作品展示
窗口本体就是一个 QMainWindow,右上角俩按钮:开始 / 暂停,中间整块是自绘的 QWidget。
在这期画面里你能看到:
-
左上角五个原料仓:生料均化、熟料库、铁粉、粘土......每个仓带液位、温度标签;
-
中间一排旋风预热器 + 烟囱 + 风管;
-
左右两套水泥磨(风机+磨机);
-
底部一个紫色大料仓;
-
五条颜色不同的管线:(黄/绿/红/蓝/紫)在画面里持续流动,物料从料仓一路流到磨机再入库。
下面展示下具体的展示效果:


亮点分析:
亮点 1:自定义管线图元,实现多色管道流体流动动画
这期作品里的流动管道真是超级多,应该是目前所有作品之最,这里也能体现出来,应对复杂的流动管道方向(2D方向),在QT这边不再会存在太大的难度。这里完全使用 QPainter 路径绘制 QPainterPath 描述管道走向,用虚线 / 渐变线段模拟介质流动。
-
每条管道对象保存路径坐标、管线颜色、流速、介质方向;
-
使用 QTimer 定时偏移线段起点,实现流动推进;
-
支持拐弯、分叉管道,自动处理拐角,不会出现线条断裂。
亮点2:料仓液位动态渲染,实时绑定测点数值
实时数据文本悬浮显示,压力、温度、流量测点数字刷新; 增加告警闪烁效果,测点越限时设备红闪报警,闪烁增加了部分,测点增了部分,有些留白处理,大家有需要可自行增加。
亮点3:支持画面缩放平移
工业组态界面经常需要放大局部工段查看细节。这边缩放不受影响。之前在项目中用QWidget原生控件,总会遇到缩放的问题,在这里使用QPainter完美的帮助我们解决了这个问题。使大家不再因为缩放而烦恼。
三、源码开放
本期源码开放,有需要的朋友可以去下面位置找我~