-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtachometer.cpp
More file actions
67 lines (50 loc) · 1.64 KB
/
tachometer.cpp
File metadata and controls
67 lines (50 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "tachometer.hpp"
#include <QPainter>
#include <QColor>
#include <qwt_dial_needle.h>
#include <qwt_round_scale_draw.h>
MtTachoMeter::MtTachoMeter(QWidget *parent) :
QwtDial(parent),m_label("RPM")
{
setWrapping(false);
setReadOnly(true);
setOrigin(135.0);
setScaleArc( 0.0, 270.0 );
scaleDraw()->setSpacing( 5 );
QwtDialSimpleNeedle *needle = new QwtDialSimpleNeedle(
QwtDialSimpleNeedle::Arrow, true, Qt::red,
QColor( Qt::gray ).light( 130 ) );
setNeedle( needle );
QwtRoundScaleDraw *rsd = new QwtRoundScaleDraw();
rsd->enableComponent( QwtAbstractScaleDraw::Backbone, true );
rsd->enableComponent( QwtAbstractScaleDraw::Labels, true );
rsd->enableComponent( QwtAbstractScaleDraw::Ticks, true );
rsd->setTickLength(QwtScaleDiv::MinorTick, 4);
rsd->setTickLength(QwtScaleDiv::MediumTick, 8);
rsd->setTickLength(QwtScaleDiv::MajorTick, 16);
setScaleDraw(rsd);
}
void MtTachoMeter::drawNeedle ( QPainter * painter,
const QPointF & center,
double radius,
double direction,
QPalette::ColorGroup colorGroup) const
{
QwtDial::drawNeedle(painter, center, radius, direction, colorGroup);
QRectF rect( 0.0, 0.0, 2.0 * radius, 2.0 * radius - 10.0 );
rect.moveCenter( center );
const QColor color = palette().color( QPalette::Text );
painter->setPen( color );
const int value = (int) this->value();
const QString format = QString("%1 %2").arg(value).arg(m_label);
const int flags = Qt::AlignBottom | Qt::AlignHCenter;
painter->drawText( rect, flags, format );
if(m_name.length() > 0) {
rect.moveTop(30.0f);
painter->drawText(rect, flags, m_name);
}
}
void MtTachoMeter::setString(const QString &str)
{
m_name = str;
}