尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

工控界面方案选型:QT5/QT6 轻量化窗口、无屏纯后台两种开发模式

工控界面方案选型:QT5/QT6 轻量化窗口、无屏纯后台两种开发模式
📅 发布时间:2026/7/25 1:21:13

工控界面方案选型:QT5/QT6 轻量化窗口、无屏纯后台两种开发模式

有些工控设备需要人机界面(HMI),有些就是闷头干活不带屏幕。选哪种方案?今天把两条路都铺开,让你少走弯路。

一、工控设备两大模式

工控设备的形态决定界面方案:

模式典型场景硬件要求开发复杂度
有屏 UI(HMI)工业平板、机床面板、温室控制柜显示屏+触摸屏+GPU(可选)中高
无屏纯后台数据采集网关、远程I/O模块、环境监测节点无显示屏,有串口+网络低

选方案不是拍脑袋,先看项目有没有"人要操作设备"这个需求。没有的话,上屏幕就是浪费钱和开发周期。

二、有屏方案:QT5 / QT6 框架选型

2.1 QT5 vs QT6 对比

对比项QT5QT6
成熟度非常成熟,工控领域大量验证仍在迭代,部分模块不完善
架构qmake构建,C++11CMake构建,C++17
图形后端LinuxFB、EGLFS、Wayland主推Wayland,LinuxFB支持退化
QMLQt Quick 2.xQt Quick 3D增强
模块变化全模块部分模块移除/合并
交叉编译文档丰富,踩坑少遇到坑可能查不到
授权LGPL/commercialLGPL/commercial

工控选型建议:2025年之前的新项目仍然优先选 QT5。理由很简单:文档全、社区活跃、踩过的坑有人填过了。QT6 除非你需要 Qt Quick 3D 或者新渲染管线,否则现在上车反而增加风险。

2.2 QT 版本推荐

QT 5.15.x —— LTS长期支持版,工控首选,稳定到2025年 QT 6.5.x —— 如果一定要上QT6,从6.5开始比较成熟

三、QT 轻量化裁剪

QT 默认编译出来很大,工控设备 Flash 有限,必须裁。裁剪的原则是:只留你用的模块,其余全砍掉。

3.1 编译选项裁剪

./configure\-prefix/opt/qt5\-opensource-confirm-license\-release\# 发布版,不开debug-strip\# 去调试符号-optimized-qmake\-no-debug-and-release\# 只编release\-no-feature-xml\# 不用XML-no-feature-dom\# 不用DOM-no-feature-sql\# 不用SQL(如果用sqlite单独开)-no-feature-testlib\# 不要测试框架-no-feature-concurrent\# 不用QtConcurrent-no-feature-threads\# 视情况,如果用多线程则保留\-no-opengl\# 没GPU就不开OpenGL-no-eglfs\# 或保留EGLFS(取决于显示后端)-no-xcb\# 不用X11-no-linuxfb\# 如果走EGLFS可以关-no-kms\# 不用DRM/KMS\-no-feature-printdialog\# 打印相关全关-no-feature-printer\-no-feature-pdf\\-skipqtwebengine\# WebEngine巨大,必砍-skipqtwebchannel\-skipqtwebsockets\# 不用WebSocket就砍-skipqtlocation\-skipqtmultimedia\# 没音视频需求-skipqtquick3d\# 不用3D-skipqtquickcontrols2\# 如果自己写控件-skipqttools\# 如果不需要Designer-skipqtscript\-skipqtsensors

裁剪前 QT5 完整编译约 800MB,裁剪后可以压到 50-100MB,工控 Flash 完全扛得住。

3.2 QML 模块裁剪

如果用 QML 开发界面,不用到的 Qt Quick 模块也可以去掉:

# configure 中-no-feature-qt-quick-particles# 粒子效果-no-feature-qt-quick-animatedimage# 动画图片

四、QT 工控界面设计原则

工控界面不是手机 APP,用户带着手套、环境粉尘大、光线强,这些都要考虑:

设计原则说明
大按钮最小 60x60 像素,戴手套可触控
高对比度白底黑字或黑底黄字,户外可读
防误触关键操作加确认弹窗
状态可视化设备状态用颜色区分(绿=正常,红=报警)
实时刷新数据每秒更新,但避免UI卡顿
禁止花哨动画工控不需要,浪费CPU和GPU
字体够大最小 16px,标题 24px+

五、QT 显示后端选择

工控板通常没有 X11 桌面环境,QT 需要直接输出到屏幕。有几种后端可选:

后端说明适用场景
EGLFS直接通过OpenGL ES渲染到屏幕有GPU的板子,性能最好
LinuxFB通过framebuffer直接绘制无GPU,性能一般但够用
Wayland通过Wayland compositor需要窗口管理
XCB通过X11工控极少用

5.1 EGLFS 配置

# 运行QT程序时指定平台./myapp-platformeglfs# 环境变量指定显示设备exportQT_QPA_EGLFS_PHYSICAL_WIDTH=154exportQT_QPA_EGLFS_PHYSICAL_HEIGHT=86exportQT_QPA_EGLFS_FB=/dev/fb0

5.2 LinuxFB 配置

# 没有GPU时用framebuffer./myapp-platformlinuxfb:fb=/dev/fb0# 设置分辨率和颜色深度exportQT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x480:depth=16

5.3 触摸屏输入

# 指定触摸设备节点( tslib 或 evdev)exportTSLIB_TSDEVICE=/dev/input/event0exportQT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0# 或使用 tslib 校准后exportQT_QPA_PLATFORM=linuxfb:fb=/dev/fb0exportQT_QPA_GENERIC_PLUGINS=tslib

六、无屏纯后台方案

没有屏幕的设备,程序就是一个守护进程,干活方式:串口采集数据 → 本地处理 → 网络上报。

6.1 systemd 服务化

# /etc/systemd/system/data-gateway.service [Unit] Description=Industrial Data Gateway After=network.target [Service] Type=simple ExecStart=/usr/bin/data_gateway Restart=always RestartSec=5 StandardOutput=syslog # 日志走syslog StandardError=syslog SyslogIdentifier=data-gateway [Install] WantedBy=multi-user.target
systemctlenable>6.2 C 语言采集 + MQTT 上报架构
#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<time.h>#include<MQTTClient.h>#defineSENSOR_DEV"/dev/ttyS1"/* 串口设备 */#defineMQTT_BROKER"tcp://192.168.1.100:1883"#defineMQTT_TOPIC"factory/device01/data"#defineINTERVAL5/* 采集间隔(秒) *//* 读取传感器数据(简化示例) */staticintread_sensor(intfd,float*temp,float*humi){/* 实际中通过Modbus RTU或自定义协议读取 *//* 这里用模拟数据示意 */*temp=25.6+(rand()%100)/10.0;*humi=60.0+(rand()%100)/10.0;return0;}intmain(intargc,char*argv[]){MQTTClient client;MQTTClient_connectOptions opts=MQTTClient_connectOptions_initializer;/* 初始化 MQTT 客户端 */MQTTClient_create(&client,MQTT_BROKER,"device01",MQTTCLIENT_PERSISTENCE_NONE,NULL);opts.keepAliveInterval=30;opts.cleansession=1;if(MQTTClient_connect(client,&opts)!=MQTTCLIENT_SUCCESS){fprintf(stderr,"Failed to connect to MQTT broker\n");return-1;}/* 主循环:采集 → 上报 */while(1){floattemp,humi;charpayload[256];time_tnow=time(NULL);read_sensor(0,&temp,&humi);/* 组装 JSON */snprintf(payload,sizeof(payload),"{\"timestamp\":%ld,\"temperature\":%.1f,\"humidity\":%.1f}",now,temp,humi);/* 发布到 MQTT */MQTTClient_message msg=MQTTClient_message_initializer;msg.payload=payload;msg.payloadlen=strlen(payload);msg.qos=1;MQTTClient_publishMessage(client,MQTT_TOPIC,&msg,NULL);printf("[%ld] Published: %s\n",now,payload);sleep(INTERVAL);}MQTTClient_disconnect(client,10000);MQTTClient_destroy(&client);return0;}

6.3 编译

CC = arm-linux-gnueabihf-gcc CFLAGS = -I/path/to/paho-mqtt/include LDFLAGS = -L/path/to/paho-mqtt/lib -lpaho-mqtt3c -lpthread data_gateway: main.c $(CC) $(CFLAGS) -o $@ main.c $(LDFLAGS) $(STRIP) $@

七、两种模式架构对比

对比维度有屏 UI 模式无屏纯后台模式
硬件成本高(屏+触摸+GPU)低(只需串口+网络)
开发语言C++ / QMLC / Python
开发周期2-4 个月2-4 周
调试复杂度高(UI调试+设备调试)低(日志为主)
运行内存128MB+32MB 足够
Flash 占用100MB+(QT库+资源)10MB
现场操作直接触屏操作远程网络操作
适用规模单机控制柜分布式采集节点

八、QT 工控界面示例

一个简单的状态监控面板,展示温度、湿度和设备状态:

#include<QApplication>#include<QWidget>#include<QLabel>#include<QVBoxLayout>#include<QTimer>#include<QFile>#include<QTextStream>classMonitorPanel:publicQWidget{Q_OBJECTpublic:MonitorPanel(QWidget*parent=nullptr):QWidget(parent){/* 全屏显示 */setWindowState(Qt::WindowFullScreen);/* 状态标签 */QLabel*titleLabel=newQLabel("工控设备监控面板",this);titleLabel->setStyleSheet("font-size: 28px; font-weight: bold; color: white; ""background-color: #2c3e50; padding: 10px;");/* 数据标签 */tempLabel=newQLabel("温度: -- °C",this);humiLabel=newQLabel("湿度: -- %RH",this);statusLabel=newQLabel("状态: 正常",this);QString dataStyle="font-size: 24px; color: #2c3e50; padding: 15px;";tempLabel->setStyleSheet(dataStyle);humiLabel->setStyleSheet(dataStyle);statusLabel->setStyleSheet("font-size: 24px; color: green; padding: 15px; font-weight: bold;");/* 布局 */QVBoxLayout*layout=newQVBoxLayout(this);layout->addWidget(titleLabel);layout->addWidget(tempLabel);layout->addWidget(humiLabel);layout->addWidget(statusLabel);layout->addStretch();/* 定时刷新 */QTimer*timer=newQTimer(this);connect(timer,&QTimer::timeout,this,&MonitorPanel::updateData);timer->start(1000);/* 初始样式 */setStyleSheet("background-color: #ecf0f1;");}privateslots:voidupdateData(){/* 读取传感器数据(实际中通过串口或Modbus) */QFilef("/sys/class/hwmon/hwmon0/temp1_input");if(f.open(QIODevice::ReadOnly|QIODevice::Text)){inttemp=f.readAll().trimmed().toInt()/1000;tempLabel->setText(QString("温度: %1 °C").arg(temp));/* 温度报警 */if(temp>60){statusLabel->setText("状态: 温度报警!");statusLabel->setStyleSheet("font-size: 24px; color: red; padding: 15px; font-weight: bold;");}}}private:QLabel*tempLabel;QLabel*humiLabel;QLabel*statusLabel;};intmain(intargc,char*argv[]){QApplicationapp(argc,argv);MonitorPanel panel;panel.show();returnapp.exec();}#include"main.moc"

九、方案选择建议

9.1 选有屏 UI 的条件

  • 现场有人操作,需要人机交互
  • 需要展示实时图表、趋势曲线
  • 设备在控制柜面板上,操作员直接操作
  • 项目预算允许增加屏幕硬件成本

9.2 选无屏后台的条件

  • 设备安装在机柜深处或室外,无人值守
  • 数据采集后通过 MQTT/Modbus TCP 上报
  • 需要多台设备组网,每台都是采集节点
  • 成本敏感,Flash 和 RAM 预算有限

9.3 混合方案

有些项目可以两者结合:网关有屏(QT),子节点无屏(C程序)。网关汇聚所有子节点数据并展示,子节点只负责采集和上报。这种架构在智慧农业、工厂 MES 系统中很常见。

十、方案对比总结

┌──────────────┬──────────────┬──────────────┐ │ │ 有屏 UI │ 无屏后台 │ ├──────────────┼──────────────┼──────────────┤ │ 框架 │ QT5/QT6 │ 纯C/Python │ │ 显示后端 │ EGLFS/FB │ 无 │ │ 网络 │ 可选 │ 必须 │ │ 开发周期 │ 长 │ 短 │ │ BOM成本 │ 高 │ 低 │ │ 适合场景 │ HMI面板 │ 采集网关 │ └──────────────┴──────────────┴──────────────┘

选方案这件事,核心就一句话:看用户要不要碰设备。要碰就上屏幕加 QT,不碰就纯后台加网络。搞清楚了再动手,免得返工。

相关新闻

  • 2026年精细全麻床垫品牌去哪里买 本地选购实用指南 - 品牌优推
  • C++ 23新特性解析:std::expected错误处理与mdspan多维数组实战
  • 港口镇高速救援服务公司筛选要点及本地出行保障参考 - 品牌优推

最新新闻

  • 射频采样ADC32RF44:从核心原理到硬件设计的工程实践指南
  • TAS3251音频DSP寄存器配置实战:CRC/XOR校验与时钟树详解
  • 2026 年新消息:湛江值得关注的清理化粪池服务商深度剖析,别再等!化粪池堵塞的致命信号你必须知道 - 企业官方推荐【认证】
  • 本地数字人工具部署指南:从环境配置到批量处理实战
  • 2026 年 7 月新发布:绥德专业的岩棉板供货厂家怎么联系,冬天保暖的秘密:别再用传统材料了-龙飒岩棉保温棉 - 品质体验官
  • 北京办理中国到肯尼亚签证正规代办旅行社服务指南 - 品牌优推

日新闻

  • 从国家条件到买方清单,深入理解 ABAP CDS 单值过滤器派生
  • 2026 年当下,齐齐哈尔专业的不锈钢闸门批发厂家哪个好,揭秘!这个工业“铁门”如何实现成本翻倍的效率提升? - 行业甄选官
  • 2026阳极氧化加工厂推荐:从设备规模看硬质氧化技术的成熟应用推荐百正机械 - 栗子测评

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号