基于QT实现车辆自定义控件,车辆仪表盘:
包括如下功能:
1.车辆方向盘转角显示
2.车辆油门踏板开度显示
3.车辆刹车踏板开度显示
4.车辆加速度显示
5.背景颜色渐变
效果如下:
参考代码:
//绘制渐变背景
void VehicleSteer::drawPanel(QPainter *painter)
{
int radius = 60;
painter->save();
painter->setPen(Qt::NoPen);
QRadialGradient radialGradient(QPointF(0, 0), 300);
radialGradient.setColorAt(0, QColor(55,107,154));
radialGradient.setColorAt(1, Qt::black);
painter->setBrush(radialGradient);
painter->drawEllipse(-width(), -height(), width() * 2, height() * 2);
painter->restore();
}
//绘制方向盘
void VehicleSteer::drawSteer(QPainter *painter)
{
int out_circle_radius = 58;
int in_circle_radius = 50;
static const QPoint points[] = {
QPoint(50,-8),
QPoint(30,-8),
QPoint(25,-15),
QPoint(-25,-15),
QPoint(-30,-8),
QPoint(-50,-8),
QPoint(-50,5),
QPoint(-30,5),
QPoint(-8,25),
QPoint(-8,50),
QPoint(8,50),
QPoint(8,25),
QPoint(30,5),
QPoint(50,5)
};
painter->save();
painter->setPen(Qt::NoPen);
painter->rotate(m_steerAngle_);
painter->setBrush(m_steerColor_);
painter->drawEllipse(-out_circle_radius, -out_circle_radius, out_circle_radius * 2, out_circle_radius * 2);
painter->setBrush(m_backgroundColor_);
painter->drawEllipse(-in_circle_radius, -in_circle_radius, in_circle_radius * 2, in_circle_radius * 2);
painter->setBrush(m_steerColor_);
painter->drawPolygon(points, sizeof(points)/sizeof(points[0]));
painter->restore();
}