#include <QGraphicsItem>
#include <QMouseEvent>
#include <QPainter>
{
Q_OBJECT
public:
explicit wayPointsConstruct
(QPointF,
double alt,
double spd,
int cntr,
QGraphicsItem *parent
= nullptr
);
QRectF boundingRect
() const override;
double altitude=0;
double speed=0;
double longitude;
double latitude;
int counter;
protected:
signals:
};
#include <QGraphicsItem>
#include <QMouseEvent>
#include <QPainter>
class wayPointsConstruct:public QObject, public QGraphicsItem
{
Q_OBJECT
public:
explicit wayPointsConstruct(QPointF,double alt, double spd, int cntr,QGraphicsItem *parent = nullptr);
QRectF boundingRect() const override;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
double altitude=0;
double speed=0;
double longitude;
double latitude;
int counter;
protected:
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
signals:
void wayPointMoves(QPointF);
};
To copy to clipboard, switch view to plain text mode
#include "waypointsconstruct.h"
#include <QFont>
#include <QGraphicsView>
#include <QGraphicsSceneDragDropEvent>
#include <QApplication>
#include <QDebug>
wayPointsConstruct
::wayPointsConstruct(QPointF lonLat,
double alt,
double spd,
int cntr,
QGraphicsItem * ){
setAcceptHoverEvents( true );
this->setZValue(2);
longitude= lonLat.x();
latitude= lonLat.y();
altitude=alt;
speed= spd;
counter= cntr;
}
QRectF wayPointsConstruct
::boundingRect() const {
return QRectF(0,
0,
300,
300);
//size can change }
{
painter
->setRenderHint
(QPainter::HighQualityAntialiasing);
QPixmap pixmap
(":/Icons/Icons/WpHereNotVerified.png");
QPixmap scaled
= pixmap.
scaled(QSize(50,
50),Qt
::KeepAspectRatio);
painter->drawPixmap(-23,-50,scaled);
font.setBold(true);
painter->setFont(font);
painter
->setPen
(QPen(Qt
::red,
0));
painter
->drawText
(-23,
10,
QString::number(counter
));
painter
->drawText
(-23,
20,
QString("ALT: %1").
arg(QString::number(altitude
)));
painter
->drawText
(-23,
30,
QString("Speed: %1").
arg(QString::number(speed
)));
}
{
if (change == ItemPositionChange && scene()) {
// value is the new position.
emit wayPointMoves(mapToScene(newPos));
}
}
#include "waypointsconstruct.h"
#include <QFont>
#include <QGraphicsView>
#include <QGraphicsSceneDragDropEvent>
#include <QApplication>
#include <QDebug>
wayPointsConstruct::wayPointsConstruct(QPointF lonLat, double alt, double spd, int cntr,QGraphicsItem * ){
setFlag(QGraphicsItem::ItemIsSelectable);
setFlag(QGraphicsItem::ItemIsMovable);
setFlag(QGraphicsItem::ItemSendsGeometryChanges);
setFlag(QGraphicsItem::ItemSendsScenePositionChanges );
setAcceptHoverEvents( true );
this->setZValue(2);
longitude= lonLat.x();
latitude= lonLat.y();
altitude=alt;
speed= spd;
counter= cntr;
}
QRectF wayPointsConstruct::boundingRect() const
{
return QRectF(0, 0, 300, 300); //size can change
}
void wayPointsConstruct::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
{
painter->setRenderHint(QPainter::HighQualityAntialiasing);
QPixmap pixmap(":/Icons/Icons/WpHereNotVerified.png");
QPixmap scaled = pixmap.scaled(QSize(50,50),Qt::KeepAspectRatio);
painter->drawPixmap(-23,-50,scaled);
QFont font;
font.setBold(true);
painter->setFont(font);
painter->setPen(QPen(Qt::red, 0));
painter->drawText(-23,10,QString::number(counter));
painter->drawText(-23,20,QString("ALT: %1").arg(QString::number(altitude)));
painter->drawText(-23,30,QString("Speed: %1").arg(QString::number(speed)));
}
QVariant wayPointsConstruct::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{
if (change == ItemPositionChange && scene()) {
// value is the new position.
QPointF newPos = value.toPointF();
emit wayPointMoves(mapToScene(newPos));
}
return QGraphicsItem::itemChange(change, value);
}
To copy to clipboard, switch view to plain text mode
Bookmarks