Qt C++ 自定义控件 和 汽车仪表盘 ---ricky.chu

今年国外疫情影响 , 真的比较闲..................ide

上网的时候无心中看到很多 制做仪表盘自定义控件的, 忍不住本身也作了一个.ui

先提下几个大仙: xieguiproject (谢大仙), feiyangqingyun (刘大仙), Osean_li (李大仙),指针

先贴个图,指针从 100-->240-->0->240循环往复 code

Qt C++ 自定义控件 和 汽车仪表盘  ---ricky.chu

用了一个 圆形渐变 和 一个圆锥渐变 .自定义控件属性有 设置最大最小值,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 轴 分开用两个公式来微调刻度值
    的位置比较好 . 另外半径用控件大小的比例来设置,不直接固定 
    大小.
相关文章
相关标签/搜索