You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWATI/Include/iPlot/iPlotBase/Helper/ZxAxisHelperDate.h

89 lines
2.3 KiB
C

#pragma once
#include "ZxAxisHelper.h"
// 日期类
class I_PLOTBASE_EXPORT ZxAxisHelperDate : public ZxAxisHelper
{
Q_OBJECT
public:
enum TimeTextFormat //刻度文本显示样式
{
TTF_Relative_TIU = 0, //相对时间,多少分或多少秒等等
TTF_Relative_Normal, //相对时间1'35.24'',时分秒模式
TTF_Absolute_Time //绝对时间格式由format来定
};
public:
explicit ZxAxisHelperDate(ZxSubAxisBase* p);
~ZxAxisHelperDate();
protected:
virtual QRectF getAxisRect(); //最大外范围
// 裁剪区
virtual void clipBounds(QPainter* painter, QRectF& rt);
// 绘制函数
virtual void drawTickAndTags(QPainter* painter, QRectF& rt);
virtual void drawOneTickTag(QPainter* painter, float fPos, QString s);
// 取得待显示的刻度文本标识
virtual QMap<float, QString> getTickInfos();
// 预估大小
virtual QRectF getPreferedTickSumRect(QPainter* painter);
virtual void adjustPreferedSize(float& w, float& h);
// 获取绘制的位置信息
virtual void locateOneTickTag(QPainter* painter, float fPos, QString s, \
QRectF& rt, int& flag);
virtual void metricStr(QPainter* painter, QString s, float& w, float& h);
// s1:time, s2:date
QString sumFromDateTime(QString s1, QString s2);
void parseToDateTime(QString s, QString& s1, QString& s2);
// 是否可以显示
virtual bool canTickShow(QRectF rt);
public:
// 刻度标识
QString getLabelStr(double d);
// 内部调整
float adjustScaleAndTicks(float& fMin, float& fMax, \
QVector<float>* pVecTicks = NULL, \
bool bConsiderRectZoom = false);
// 基准时间设置
void setBaseDt(QDateTime& dt);
QDateTime getBaseDt();
// 时间设置
void setTtf(TimeTextFormat o);
TimeTextFormat getTtf();
void setTtfFormat(QString s);
QString getTtfFormat();
void setTtfUnit(QString s);
QString getTtfUnit();
QString getTimeBaseUnit();
public slots:
protected:
// 起始时间对应数据深度0
QDateTime m_dtBase;
TimeTextFormat m_oTtf;
QString m_sTtfUnit; //对于相对时间,是单位
QString m_sTtfFormat; //对于绝对时间是format
};