PowerMaster/util/TimeLine/timeLineItem.h

70 lines
1.5 KiB
C++

#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