#ifndef EACLOCK_H #define EACLOCK_H #include "ebase.h" #include "base/locolorselector.h" #include #include #include #include #include #include #include class eAClock : public EBase { Q_OBJECT public: struct Data { QByteArray timeZoneId; int hourMark;//时针 int hourMarkSize;//时针大小 QColor hourMarkColor;//时针颜色 int minMark;//分针 int minMarkSize;//分针大小 QColor minMarkColor;//分针颜色 QColor hourHandColor;//秒针 QColor minHandColor;//秒针大小 QColor secHandColor;//秒针颜色 QString text;//标题 QFont textFont;//标题字体 QColor textColor;//标题字体颜色 int playDuration=10;// QString path=""; QString name=""; QString selfCreateDialName; bool hasDialImg; }; explicit eAClock(EBase *multiWin = nullptr); explicit eAClock(const QJsonObject &json, EBase *multiWin = nullptr); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; int type() const override { return EBase::AClock; } QWidget* attrWgt() override; bool save(const QString &pRoot) override; QJsonObject attrJson() const override; protected: void drawMarkCircular (QPainter *painter, const QPointF &pos, const QColor &color, qreal diameter); void drawMarkRectangle(QPainter *painter, const QPointF &pos, const QColor &color, qreal len, qreal rotate); void drawMarkNumber (QPainter *painter, const QPointF &pos, const QColor &color, qreal len, int num); void drawHand (QPainter *painter, qreal angle, const QColor &color, qreal len, qreal base); void paintDial(QPainter *painter); void paintText(QPainter *painter); qreal radiusHour() const; qreal radiusMin() const; qreal radius() const { return radiusHour() < radiusMin() ? radiusHour() : radiusMin(); } void init(); Data m_attr; QImage dial_img; QTime time; }; #endif // EACLOCK_H