2024-12-06 16:58:07 +08:00
|
|
|
#ifndef TIMELINEITEM_H
|
|
|
|
|
#define TIMELINEITEM_H
|
|
|
|
|
|
|
|
|
|
#include "timeLine_globals.h"
|
|
|
|
|
#include <QGraphicsObject>
|
|
|
|
|
#include <QDateTime>
|
|
|
|
|
|
|
|
|
|
namespace TimeLine
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
enum TimeUnit
|
|
|
|
|
{
|
|
|
|
|
TU_Year = 1, //yyyy
|
|
|
|
|
TU_Month, //yyyy/M/1
|
|
|
|
|
TU_Day, //M/d
|
|
|
|
|
TU_Hour, //M/d/hh
|
|
|
|
|
TU_Minute_30, //hh:mm
|
|
|
|
|
TU_Minute_20, //hh:mm
|
|
|
|
|
TU_Minute_15, //hh:mm
|
|
|
|
|
TU_Minute_10, //hh:mm
|
|
|
|
|
TU_Minute_5, //hh:mm
|
|
|
|
|
TU_Minute_3, //hh:mm
|
|
|
|
|
TU_Minute_1, //hh:mm
|
|
|
|
|
TU_Second_30, //hh:mm:ss
|
|
|
|
|
TU_Second_10, //hh:mm:ss
|
|
|
|
|
TU_Second_1, //hh:mm:ss
|
|
|
|
|
TU_MSecond_500, //mm:ss:z
|
|
|
|
|
TU_MSecond_100, //mm:ss:z
|
|
|
|
|
TU_MSecond_50, //mm:ss:z
|
|
|
|
|
TU_MSecond_10 //mm:ss:z
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class TimeLineItemPrivate;
|
|
|
|
|
class TimeLineItem : public QGraphicsObject
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
explicit TimeLineItem();
|
|
|
|
|
virtual ~TimeLineItem();
|
|
|
|
|
|
|
|
|
|
virtual QRectF boundingRect() const;
|
|
|
|
|
void updateBoundingRect(const QRect&);
|
|
|
|
|
void setLineColor(QColor);
|
|
|
|
|
void setScaleSize(int);
|
|
|
|
|
void setState(DisplayState);
|
|
|
|
|
void setTime(QDateTime);
|
|
|
|
|
|
|
|
|
|
void zoomIn();
|
|
|
|
|
void zoomOut();
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
void drawScaleLine(QPainter*);
|
|
|
|
|
void drawTimeText(QPainter*, int);
|
|
|
|
|
QDateTime calculateLeftTime(); //计算当前时间左侧第一个需要输出展示的时间点
|
|
|
|
|
int calculateLeftTimePos(); //计算左侧时间点的坐标位置
|
|
|
|
|
QDateTime calculateTime(int); //计算坐标点所对应的时间
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
TimeLineItemPrivate* d_ptr;
|
|
|
|
|
friend class TimeLineWidget;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} // namespace TimeLine
|
|
|
|
|
|
|
|
|
|
#endif
|