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.

109 lines
2.5 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include <QWidget>
#include <memory>
#include <vector>
#include <cmath>
#include <QMouseEvent>
#include <QRectF>
#include <QStringListModel>
#include <QMessageBox>
#include <QRegExpValidator>
#include <QRegExp>
#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<MyDieRectItem> m_dieObj;
std::shared_ptr<MyQGraphicsLineItem> m_XCoordAxis; //坐标系X轴
std::shared_ptr<MyQGraphicsLineItem> 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<std::shared_ptr<MyQGraphicsLineItem>> m_lineItemVec;
std::vector<std::shared_ptr<MyDrawRectItem>> m_rectItemVec;
std::vector<std::shared_ptr<MyQGraphicsEllipseItem>> m_circleItemVec;
std::vector<std::shared_ptr<MyQGraphicsTextItem>> m_textItemVec;
};