上位机项目里经常会有一个很简单的需求我想知道设备现在是什么状态。在线还是离线。空闲还是运行。正常还是报警。有没有最近一次更新时间。这些东西看起来简单但现场调试时很有用。因为很多时候软件不是完全不能用。而是你不知道它现在到底处在哪个状态。所以这个小项目可以从一个“设备状态看板”开始。它不复杂但很适合作为 Qt 上位机练手项目。解决什么问题很多 demo 只做按钮和结果。点一下连接。点一下启动。底下打印几行日志。但真实项目里操作员更关心的是这台设备现在能不能用刚才有没有掉线报警有没有恢复软件显示的状态是不是最新的状态看板就是把这些信息摆出来。不一定要做得很花。只要清楚就行。可以只做几个功能显示多台设备每台设备有名称和状态状态分为空闲、运行、离线、报警状态变化时记录一条日志提供几个按钮模拟状态变化这个项目的重点不是界面多漂亮。重点是练一个思路状态变化先发生在数据里再由界面显示出来。不要让界面自己变来变去。可以先从一个结构体开始设备信息不用一上来就封装得很复杂。先用一个简单结构体就够enumclassDeviceState{Offline,Idle,Running,Alarm};structDeviceInfo{QString name;DeviceState state;QDateTime updateTime;};有了这个结构界面就不是凭空显示状态。它显示的是DeviceInfo里的状态。后面你要加设备编号、IP、报警码、备注也有地方放。这比直接在标签上写文字稳得多。状态变化要留下痕迹状态看板还有一个很实用的小功能状态变化时写日志。比如voidDevicePanel::setState(DeviceState state){if(m_info.statestate)return;m_info.statestate;m_info.updateTimeQDateTime::currentDateTime();refreshUi();appendLog(m_info.name 状态变化stateText(state));}这段代码的重点不是refreshUi()。而是状态变化这件事被集中处理了。以后你想加报警声音、颜色变化、数据库记录都可以放在这个入口附近。不要散落在各个按钮里。小工具也能练工程习惯这个状态看板看起来只是一个小工具。但它能练到很多真实项目里的东西。比如状态定义。比如 UI 刷新。比如日志记录。比如状态变化入口。比如多个设备的管理。这些东西做顺了后面接真实设备会轻松很多。一开始可以用按钮模拟设备状态。等界面和状态逻辑稳定了再接串口、Modbus、网络接口都可以。很多上位机项目不是一上来就要做大。先把这种小模块写清楚后面堆功能时才不容易乱。源码获取需要源码的话可以在公众号后台回复关键词源码。也可以加博主微信把这篇文章链接发过去获取。