QT自定义控件之水泥厂组态(源码开源)

一、前言

这期作品其实最初的时候,有做过,不过当时做的时候,配图花了很长时间,手搓痕迹较重。在某站上曾经手搓上传过这个作品的出版,后期大家感兴趣可以去查看,这里不再重复述说了。然后现在有了智能小助手之后,这个工作效率就升上来了。至少在炫酷感方向上,我们的方向不再执着于美不美丽,漂不漂亮了,更多的只要做程序化的动作。

下面聊下本期的作品,本文基于一个真实跑在 Qt Widgets 里的水泥厂 DCS 组态画面,主要还是矢量绘制、流体动画、定时器调度这几件事。

这期的技术栈方向依然是我们的老演员:C++、QT、QPainter

二、作品展示

窗口本体就是一个 QMainWindow,右上角俩按钮:开始 / 暂停,中间整块是自绘的 QWidget。

在这期画面里你能看到:

  • 左上角五个原料仓:生料均化、熟料库、铁粉、粘土......每个仓带液位、温度标签;

  • 中间一排旋风预热器 + 烟囱 + 风管;

  • 左右两套水泥磨(风机+磨机);

  • 底部一个紫色大料仓;

  • 五条颜色不同的管线:(黄/绿/红/蓝/紫)在画面里持续流动,物料从料仓一路流到磨机再入库。

下面展示下具体的展示效果:

亮点分析:

亮点 1:自定义管线图元,实现多色管道流体流动动画

这期作品里的流动管道真是超级多,应该是目前所有作品之最,这里也能体现出来,应对复杂的流动管道方向(2D方向),在QT这边不再会存在太大的难度。这里完全使用 QPainter 路径绘制 QPainterPath 描述管道走向,用虚线 / 渐变线段模拟介质流动。

  • 每条管道对象保存路径坐标、管线颜色、流速、介质方向;

  • 使用 QTimer 定时偏移线段起点,实现流动推进;

  • 支持拐弯、分叉管道,自动处理拐角,不会出现线条断裂。

亮点2:料仓液位动态渲染,实时绑定测点数值

实时数据文本悬浮显示,压力、温度、流量测点数字刷新; 增加告警闪烁效果,测点越限时设备红闪报警,闪烁增加了部分,测点增了部分,有些留白处理,大家有需要可自行增加。

亮点3:支持画面缩放平移

工业组态界面经常需要放大局部工段查看细节。这边缩放不受影响。之前在项目中用QWidget原生控件,总会遇到缩放的问题,在这里使用QPainter完美的帮助我们解决了这个问题。使大家不再因为缩放而烦恼。

三、源码开放

本期源码开放,有需要的朋友可以去下面位置找我~

QT自定义控件之水泥厂组态(源码开源)

相关推荐
总要学点什么1 小时前
第98篇:三维特效-材质线效果——给一条线换十种材质,虚线的图案只填了一半
开发语言·前端·javascript·ecmascript·gis·webgl·材质
田甲1 小时前
做一款 Type-C 母座读卡器:GL3224 双卡方案实测
c语言·开发语言
严肃小白兔1 小时前
MATLAB 绘图与科研论文插图制作:图形设计、统计表达与矢量导出
开发语言·matlab·科研绘图
Funlang3 小时前
给机器写的 JavaScript 造个笼子
开发语言·javascript·ecmascript
普通人63 小时前
PHP文件读写完全指南
开发语言·php·1024程序员节
坤坤子吖4 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
一晌小贪欢5 小时前
Python基础:第 09 篇 · while 循环:重复直到不满足
开发语言·c++·python·数据可视化·面向对象·python办公
xiaoye-duck5 小时前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型
一条大祥脚6 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
FRing036 小时前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2