#ifndef ERICHEDIT_H #define ERICHEDIT_H #include #include "eobject.h" #include "QTextEdit" class eTextAttr; class eRichEdit : public eObject { Q_OBJECT public: enum PlayStyle { Turning = 0, Rolling, Static }; enum RollingStyle { Left2Right = 0, Right2Left, Top2Bottom, Bottom2Top }; struct Data { // Widget QString text; QFont font; QTextOption opt; QColor cText; QColor cTextShadow; QColor cBackground; int lineSpacing; // Play int playStyle; bool headTailConnected; int headTailSpacing; int rollingSpeed; int rollingStyle; int playDuration=10; }; public: explicit eRichEdit(InteractiveType type = Dynamic, QGraphicsItem *parent = nullptr); explicit eRichEdit(const QJsonObject &json, InteractiveType type = Dynamic, QGraphicsItem *parent = nullptr); private: void init(); public: static void setElement(const QJsonObject &json, Data &attr); public: virtual int type() const override { return eObject::Gif; } virtual QWidget* wAttr() override; virtual QWidget* wAttrElement() override; virtual QJsonObject elementJson() const override; signals: public slots: virtual void playElectment() override; virtual void stopElectment() override; void onAttrChanged(const eRichEdit::Data &data); void onAdjustMovieRect(); private: eTextAttr *m_wAttr; QTextEdit *m_textEdit; QGraphicsProxyWidget *m_vWidget; Data m_attr; }; #endif // ERICHEDIT_H