本文实例为大家分享了Qt自定义控件实现简易仪表盘的具体代码,供大家参考,具体内容如下
Qt自定义控件12:简易仪表盘(根据liudianwu大神的界面自己写的代码,建议去学习刘大神,会受益良多的)
先看效果图:
思路:画270度的圆弧,圆弧根据占比分为两种颜色,根据占比在圆弧上画出一个圆球作为标志,然后就是刻度线和刻度值。刻度线是根据坐标系旋转画出,刻度值是根据角度求出x, y坐标值构造出一个矩形画出刻度值(不要用坐标系旋转画刻度值,那样刻度值的角度也会旋转,写出的字不是正的,效果不好)。最后就是在中心画价值。
关键代码:
空白CMPassrate5: paintEvent (QPaintEvent *事件){ int宽度=这→宽度(); int高度=这→高度(); int一边=qMin(宽度、高度); QPainter画家(这个); 画家。setRenderHints (QPainter::抗锯齿| QPainter: TextAntialiasing); 画家。翻译(宽/2,高/2); 画家。规模(边/200.0,边/200.0); drawE(及画家); drawEPoint(及画家); 画直线(及画家); drawEText(及画家); drawValue(及画家); } 空白CMPassrate5: drawE (QPainter *画家){ QRect矩形(半径,半径,半径2 * 2 *半径); 画家→保存(); 画家→setPen (Qt:: NoPen); QPainterPath路径; QPainterPath子路径; QPainterPath outPath; QPainterPath outPubPath; outPath.arcTo(矩形、-45、超量程); outPubPath.addEllipse (rect.adjusted(一边,另一边,一边侧)); outPath -=outPubPath; color.setAlpha (100); 画家→setBrush(颜色); 画家→drawPath (outPath); path.arcTo(矩形、-45 +超量程、范围); subPath.addEllipse (rect.adjusted (4、4、4、4)); 路径-=子路径; color.setAlpha (180); 画家→setBrush(颜色); 画家→drawPath(路径); 画家→恢复(); } 空白CMPassrate5: drawEPoint (QPainter *画家){//圆球位置就在超量程尽头处 画家→保存(); color.setAlpha (180); 画家→setPen (Qt:: NoPen); 画家→setBrush(颜色); 浮动x=(radius-side/2) * qCos ((+ 135) * 3.14/180); 浮动y=(radius-side/2) * qSin ((+ 135) * 3.14/180); qDebug () & lt; & lt;“x:”& lt; & lt; x<& lt;“y:”& lt; & lt; y; 画家→drawEllipse (QPoint (x, y),一面,一面); 画家→恢复(); } 空白CMPassrate5:画直线(QPainter *画家){ 画家→保存(); 画家→旋转(135); color.setAlpha (100); 画家→setPen(颜色); QLine线(QPoint (radius-side-lineLength, 0), QPoint (radius-side, 0)); for (int i=0; i以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Qt自定义控件实现简易仪表盘