如何使用Qt自定义控件实现简易仪表盘
这篇文章将为大家详细讲解有关如何使用Qt自定义控件实现简易仪表盘,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
创新互联主要从事网站建设、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务繁昌,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
Qt自定义控件12:简易仪表盘
思路:画270度的圆弧,圆弧根据占比分为两种颜色,根据占比在圆弧上画出一个圆球作为标志,然后就是刻度线和刻度值。刻度线是根据坐标系旋转画出,刻度值是根据角度求出x,y坐标值构造出一个矩形画出刻度值(不要用坐标系旋转画刻度值,那样刻度值的角度也会旋转,写出的字不是正的,效果不好)。最后就是在中心画value。
关键代码:
void CMPassrate5::paintEvent(QPaintEvent *event){ int width = this->width(); int height = this->height(); int side = qMin(width, height); QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); painter.translate(width / 2, height / 2); painter.scale(side / 200.0, side / 200.0); drawE(&painter); drawEPoint(&painter); drawLine(&painter); drawEText(&painter); drawValue(&painter);}void CMPassrate5::drawE(QPainter* painter){ QRect rect(-radius,-radius,2*radius,2*radius); painter->save(); painter->setPen(Qt::NoPen); QPainterPath path; QPainterPath subPath; QPainterPath outPath; QPainterPath outPubPath; outPath.arcTo(rect,-45,outRange); outPubPath.addEllipse(rect.adjusted(side,side,-side,-side)); outPath -= outPubPath; color.setAlpha(100); painter->setBrush(color); painter->drawPath(outPath); path.arcTo(rect,-45+outRange,range); subPath.addEllipse(rect.adjusted(4,4,-4,-4)); path -= subPath; color.setAlpha(180); painter->setBrush(color); painter->drawPath(path); painter->restore();}void CMPassrate5::drawEPoint(QPainter* painter){ //圆球位置就在outRange尽头处 painter->save(); color.setAlpha(180); painter->setPen(Qt::NoPen); painter->setBrush(color); float x = (radius-side/2)*qCos((range+135)*3.14/180); float y = (radius-side/2)*qSin((range+135)*3.14/180); qDebug()<<"x:"<
关于“如何使用Qt自定义控件实现简易仪表盘”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
当前标题:如何使用Qt自定义控件实现简易仪表盘
文章起源:http://cdiso.cn/article/isjcgh.html