PDA

View Full Version : Little issue when trying to use a value as a function



Badeand
5th April 2011, 15:01
Hi, I am sorry if this is a very noobish question but I have tried to create a speed-o-meter from the clock example posted somewhere on this site.

This is my code so far in that class:

#include <QtGui>
#include "graphview.h"
#include "mainwindow.h"
#include "paramwidget.h"
#include "connectbar.h"
#include "mapwidget.h"
#include "speedometer.h"



SpeedoMeter::SpeedoMeter(QWidget *parent)
: QWidget(parent), mdir("messages.txt")
{



// QTimer *timer = new QTimer(this);
// connect(timer, SIGNAL(timeout()), this, SLOT(update()));
// timer->start(1000);

setWindowTitle(tr("Speed-O-Meter"));
resize(200, 200);
}

void SpeedoMeter::paintEvent(QPaintEvent *)
{


GraphView* velocity = new GraphView(mdir.getMsgInfo("VELOCITY"), mdir.getMsgInfo("UTC"));
//float velocity = _minfo->getFloat(msg);






static const QPoint hourHand[3] = {
QPoint(7, 8),
QPoint(-7, 8),
QPoint(0, -40)
};
// static const QPoint minuteHand[3] = {
// QPoint(7, 8),
// QPoint(-7, 8),
// QPoint(0, -70)
// };

QColor hourColor(0, 191, 255);
// QColor minuteColor(0, 127, 127, 191);

int side = qMin(width(), height());
// QTime time = QTime::currentTime();

QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.translate(width() / 2, height() / 2);
painter.scale(side / 200.0, side / 200.0);

painter.setPen(Qt::NoPen);
painter.setBrush(hourColor);

painter.save();
painter.rotate(12.0 * ((velocity(0))));
painter.drawConvexPolygon(hourHand, 3);
painter.restore();

painter.setPen(hourColor);

for (int i = 0; i < 12; ++i) {
painter.drawLine(88, 0, 96, 0);
painter.rotate(30.0);
}

//painter.setPen(Qt::NoPen);
//painter.setBrush(minuteColor);

//painter.save();
// painter.rotate(6.0 * (time.minute() + time.second() / 60.0));
//painter.drawConvexPolygon(minuteHand, 3);
//painter.restore();

//painter.setPen(minuteColor);

// for (int j = 0; j < 60; ++j) {
// if ((j % 5) != 0)
// painter.drawLine(92, 0, 96, 0);
//painter.rotate(6.0);
//}
}

I get the following error when I try to run it 'velocity' cannot be used as a function.
but thats exactly what I want, the line
GraphView* velocity = new GraphView(mdir.getMsgInfo("VELOCITY"), mdir.getMsgInfo("UTC")); is used in one of my other classes to decleare a widget and then I place the widget out on my main windows and I get a value from it (speed), this value I want to use in my speedometer so that it looks like a cool analog speedometer and not just the value.

any sugestions?

thanks.

Lesiok
5th April 2011, 15:32
Line 63 :

painter.rotate(12.0 * ((velocity(0))));what do You want to do ???

ChrisW67
5th April 2011, 23:44
The needle on the dial should be rotated by some amount proportional to the velocity before being drawn. Commented line 30 with its float velocity looks like a better, though not correct, fit to line 63. The constant 12.0 is coming from the 12-hour clock this was cut-n-pasted from.

Badeand
6th April 2011, 19:00
Hi,
I think I am giving upp on that project since it might be that the vehicle goes a bit to fast for a 360 degrees visualization, but now I want to make this code to be a roll meter instead, to see if the vehicle is horizontal or in a roll, if you know what I mean, like in flightsimulator =) (----) or (not horizontal line).