PowerMaster/util/TimeLine/timeLineItem.h

67 lines
2.2 KiB
C
Raw Normal View History

#ifndef TIMELINEITEM_H
#define TIMELINEITEM_H
/*******************************************************************************
** TimeLine-TimeLineItem
2024-12-25 08:34:51 +08:00
** author dsc
**
** TimeLine的核心组件线
**
** 6032078
** 20mRange20:0020:2020:4021:003mRange
** 20:0020:0320:06...20:5721:00
**
**
******************************************************************************/
#include "global.h"
#include <QGraphicsObject>
#include <QDateTime>
namespace TimeLine
{
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(DateTimeWidgetState);
void setTime(QDateTime);
QDateTime time();
qint64 getOffsetTimeValue(int); //获取时间的偏移值(相对当前时间,在鼠标移动拖拽时调用,通过拖拽时同步更改当前时间继而重绘时间轴从而模拟出拖拽效果)
void zoomIn();
void zoomOut();
void setTimeUnit(TimeUnit);
TimeUnit timeUnit();
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
private:
void drawScaleLine(QPainter*);
void drawTimeText(QPainter*, int);
QDateTime calculateRightTime(); //计算当前时间右侧第一个需要输出展示的时间点
int calculateRightTimePos(); //计算右侧时间点的坐标位置
QDateTime calculateTime(double); //计算给定参数值所对应的时间参数为scalesize的倍数
QDateTime getTime(int); //获取坐标点X所对应的时间
private:
TimeLineItemPrivate* d_ptr;
friend class TimeLineWidget;
};
} // namespace TimeLine
#endif