Qt 自定义加载动画控件:带文字提示的等待 spinner 实现
在 Qt 项目开发中,耗时操作(如数据加载、设备自检、接口请求)时,需要一个直观的加载提示控件提升用户体验。本文将分享一款自定义等待 spinner 控件的设计思路与使用场景,支持样式自定义、文字提示、灵活显示隐藏,无需 UI 提升即可直接集成。
一、控件核心功能亮点这款自定义等待控件解决了常规加载动画的痛点,核心特性如下:
- 全样式可配置:支持调整线条颜色、数量、长度、宽度,内圆半径、旋转速度等参数,适配不同界面风格。
- 文字提示增强:中间可显示自定义文字(如“自检中,请等待…”),支持单独设置文字颜色,避免文字与动画融合。
- 灵活的显示逻辑:可选择居中到父控件(如主窗口)或在指定区域内显示,支持启用/禁用“父控件锁定”(避免操作冲突)。
- 轻量无依赖:纯 Qt 原生 API 实现,无需第三方库,支持 Qt 5 及以上版本,跨平台兼容。
- 安全的生命周期管理:支持动态创建/销毁,避免内存泄漏,重复点击不会出现控件叠加问题。
二、控件设计思路
1. 核心原理
控件继承自 QWidget,通过 QTimer 触发旋转动画,在 paintEvent 中绘制旋转的线条和居中文字。线条的透明度随旋转角度渐变,形成“轨迹淡出”效果,提升视觉层次感。
2. 关键设计点
- 动画绘制:通过循环绘制多条线段,结合旋转角度计算和透明度渐变,模拟连续旋转效果。
- 文字居中:利用 QFontMetrics 计算文
