今年国外疫情影响 , 真的比较闲..................ide
上网的时候无心中看到很多 制做仪表盘自定义控件的, 忍不住本身也作了一个.ui
先提下几个大仙: xieguiproject (谢大仙), feiyangqingyun (刘大仙), Osean_li (李大仙),指针
先贴个图,指针从 100-->240-->0->240循环往复 code
用了一个 圆形渐变 和 一个圆锥渐变 .自定义控件属性有 设置最大最小值,blog
大刻度和小刻度. 起始位置,结束位置和 6 点钟位置夹角。ip
还有设置当前数值和小数点.it
设置刻度值数字的时候, 要分坐标轴左右 用不一样的公式来微调,class
网上不少代码段落都是不完整的 . 例如求刻度数值坐标位置
...................................gui
w = fm.size(Qt::TextSingleLine,str).width();循环
h = fm.size(Qt::TextSingleLine,str).height(); x = 82 * cosa - w / 2; y = -82 * sina + h / 4; painter->drawText(x, y, str)
drawtext() 从左到右,可是若是圆的左右上下都是一个坐标公式, 仪表盘半径变更的时候,
问题就会比较 明显. 如数字侵入到 仪表盘 刻度上 ,或 远离刻度. 因此坐标轴正负方向特别是 x 轴 分开用两个公式来微调刻度值 的位置比较好 . 另外半径用控件大小的比例来设置,不直接固定 大小.