auto_bus/include/BusWidget.h

66 lines
1.3 KiB
C++

//
// Created by ricardo on 2022/6/28.
//
#ifndef AUTO_BUS_GUI_BUS_WIDGET_H
#define AUTO_BUS_GUI_BUS_WIDGET_H
#include "QGraphicsPixmapItem"
#include "QTransform"
#include "QPropertyAnimation"
#include "PosPair.h"
#include "define.h"
/**
* 显示公交车的对象
* 继承了QObject QGraphicsPixmapItem
* 用以使用qt的动画框架
*/
class BusItem: public QObject, public QGraphicsPixmapItem
{
// 调用这个宏使其qt对象化
Q_OBJECT
// 注册了一个QPointF类型的变量pos
// 读取这个变量通过 pos()函数
// 写入这个变量通过 setPos()函数
Q_PROPERTY(QPointF pos READ pos WRITE setPos)
public:
explicit BusItem(const QPixmap& pixmap);
};
class BusWidget
{
public:
BusItem *item;
explicit BusWidget();
~BusWidget();
/**
* 重置公交车
* @param s 位置对数组的头指针
* @param num 站点数目
*/
void ResetBusPos(PosPair *s, int num);
/**
* 开始公交车动画
* @param direction 动画的方向
* @param duration 动画持续的时间 ms
*/
void StartAnimation(int direction, int duration);
private:
PosPair *pos_pairs = nullptr;
QPropertyAnimation *animation;
int pos = 0;
int node_num = 0;
};
#endif //AUTO_BUS_GUI_BUS_WIDGET_H