前言
这篇是讲解在widget里绘制线的内容,为啥会和仪表盘扯到一起,因为博主的项目中刚好是这些东西放一起的所以就写一起了
效果图
中间的黑线就是了,为啥不截整个界面呢,问就是公司机密,赔不起
实现
因为项目要求哪里联通哪里亮起所以呢这线也进行了枚举的方式
struct Line_Color
{
QColor line_col = QColor(0,0,0);
};
enum LineNum{
line1 = 1,
line2 = 2,
line3 = 3,
line4 = 4,
line5 = 5,
line6 =6,
};
由于确切的只要6线所以就写了给画线的函数
void Widget::drawLine(LineNum num, QPainter &p, QPoint start, QPoint end)
{
p.setRenderHint(QPainter::Antialiasing);
p.setPen(QPen(m_LineColor[num].line_col, 5));
p.drawLine(start,end);
}
参数也很简单(线的号码,画笔,起始点,终点)
函数里的5是画笔的粗细可以自己调
如何使用呢,拿中间最长的那一条来说,就是界面的最左边带最右边,起始位置(0,界面高的一半),终点(界面的宽,界面高的一半)
drawLine(line2,p,QPoint(0,height()/2),QPoint(width(),height()/2));
项目是根据屏幕自动全屏的,控件也自适应所以点位以控件来定,不然会乱,如果界面固定大小的直接就数字填入就好了
那如何改变颜色类
也专门写了一个函数使用
void Widget::setLinecolor(LineNum num, QColor lineColor)
{
m_LineColor[num].line_col = lineColor;
this->update();
}
函数使用:
setLinecolor(line2,QColor(127,255,0));
效果:
公司项目恕不能将完整代码贴上来,如有疑问可以私信留言
有其他方法也可交流学习