#pragma once #include #include #include #include #include #include #include #include #include #include #include "ui_DieUI.h" #include "global.h" #include "mappingchart_global.h" #include "MyQGraphicsLineItem.h" #include "MyQGraphicsRectItem.h" #include "MyDieRectItem.h" #include "MyDrawRectItem.h" #include "MyQGraphicsEllipseItem.h" #include "MyQGraphicsTextItem.h" #include "RecipeAttrObj.h" class MAPPINGCHART_EXPORT DieUI : public QWidget { Q_OBJECT public: typedef enum DrawTypeEnum { NONE, LINE, RECT, CIRCLE, TEXT }DrawTypeEnum; public: DieUI(QWidget *parent = Q_NULLPTR); ~DieUI(); signals: void signal_charEditEnd(); public slots: void slot_dealMouseEvent(QPointF p1, QPointF p2); void slot_dealSelect(int id); void slot_autoId(); void slot_addText(); void slot_deleteText(); void slot_modifyText(); //一次性增加所有字符 void slot_addAllChar(); void slot_cancelAllSelectChar(); void slot_topAdjustPos(); void slot_downAdjustPos(); void slot_leftAdjustPos(); void slot_rightAdjustPos(); public: void ShowDieCoordLayout(double dieWidth, double dieHeight, QStringList& allFontList, QString recipeFileCurFont); bool SetRecipeDie(RecipeAttrObj& obj); void ShowRecipeAllCharOnDie(RecipeAttrObj& obj, QStringList allFontType); void ClearUIDie(); private: void AddLine(int id, double x1, double y1, double x2, double y2); void AddRect(double x1, double y1, double x2, double y2); void AddCircle(int id, double x1, double y1, double diameter); void AddText(double x1, double y1); void commonAddText(int charId); bool JudgeIdIsNormal(); void CommonAdjustCharPos(int flag, double dis);//flag:0代表上,1代表下,2代表左,3代表右 private: Ui::DieUI ui; QGraphicsScene m_scene; std::shared_ptr m_dieObj; std::shared_ptr m_XCoordAxis; //坐标系X轴 std::shared_ptr m_YCoordAxis; //坐标系Y轴 QPen m_pen; //线相关属性 QPointF m_startPos; DrawTypeEnum m_drawType; int m_curSelectId = -1; //当前选中的item public: //die相关属性 double m_dieWidth = 3; double m_dieHeight = 4; QStringList m_allFontList; std::vector> m_lineItemVec; std::vector> m_rectItemVec; std::vector> m_circleItemVec; std::vector> m_textItemVec; };