ARTICLE · 1247765
源码开源/会动的仿真机械臂控件
源码开源/会动的仿真机械臂控件
在工业上位机软件里,经常需要简单展示机械臂运行状态,不一定上完整3D引擎,有时候一个2D动画就够用。
这个RobotArmWidget就是一个纯Qt绘制的2D机械臂自定义Widget,不需要任何第三方库,只靠QWidget+QPainter绘图+QTimer定时器就实现动态动画效果。

• 源码开源 • 有需要的朋友 • 关注本公众号后 • 在文章后面评论我要源码字样 • 加微信feiyangqingyun • 评论截图发微信即可 • 发的是当前单个控件的完整源码和使用示例 • 全套260个控件源码有需要可以考虑购买 • 麻烦顺带点赞转发下谢谢
能做到的效果:
1. 机械臂自动摆动,大臂小臂联动,夹爪会不停开合,模拟抓取动作。 2. 窗口拉大缩小,机械臂会自动适配控件大小,不会画超出边界。 3. 可以启停动画、调节摆动速度、摆动幅度。 4. 支持机械臂向左弯、向右弯两种姿态。 5. 臂杆、底座、关节的颜色都可以代码修改。 6. 停止动画时,机械臂保持当前姿势定格,不会自动复位。
整体画面包含:地面线、梯形底座、回转平台、肩关节、大臂、肘关节、小臂、腕部、两指夹爪。
二、整体开发思路
Qt自定义绘图控件标准套路:
1. 继承QWidget,重写 paintEvent做所有绘图;2. QTimer定时器驱动动画:定时修改相位变量,调用 update()触发重绘;3. 数学计算位置:三角函数计算每个关节点坐标,而不是写死像素,实现自适应窗口; 4. 拆分绘图函数:底座、机械臂杆、夹爪分成独立函数,代码好维护; 5. 封装属性+信号槽+Q_PROPERTY,外部代码可以很方便修改参数,还能在Qt Designer中使用; 6. 边界保护:所有长度、角度做上下限,防止参数越界导致画面错乱。
关键点:动画不是移动控件,是每一帧重新算坐标、重新画一遍画面。QWidget本身位置不动,画面全部由QPainter画在控件画布上。
三、可以继续扩展的方向
如果基于这个控件二次开发,可以增加这些功能:
1. 外部输入真实关节角度,不再自动动画,用来显示真实设备反馈回来的角度; 2. 增加工具提示,鼠标悬浮显示当前角度; 3. 增加夹爪张开角度单独可控; 4. 增加轨迹点绘制,画出机械臂末端运动轨迹; 5. 增加报警状态,故障时机械臂变红闪烁。
其他信息
1. 国内开源:https://gitee.com/feiyangqingyun 2. 国际开源:https://github.com/feiyangqingyun 3. 项目大全:https://qtchina.blog.csdn.net/article/details/97565652 4. 联系方式:微信 feiyangqingyun 5. 官方店:https://shop114595942.taobao.com/















































































