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.

96 lines
2.2 KiB
C++

#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"
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_setDrawLineFlag();
void slot_setDrawRectFlag();
void slot_setCircleFlag();
void slot_setTextFlag();
void slot_setDrawNone();
void slot_dealMouseEvent(QPointF p1, QPointF p2);
void slot_dealSelect(int id);
//界面手动输入实际die坐标相关槽
void slot_setLineCoord();
void slot_setRectCoord();
void slot_setCircle();
void slot_addText();
void slot_deleteText();
void slot_sendEditEnd();
public:
void InitDieUI(double dieWidth, double dieHeight, QStringList& allFontList);
private:
void AddLine(double x1, double y1, double x2, double y2);
void AddRect(double x1, double y1, double x2, double y2);
void AddCircle(double x1, double y1, double x2, double y2);
void AddText(double x1, double y1);
private:
Ui::DieUI ui;
QGraphicsScene m_scene;
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::shared_ptr<MyQGraphicsLineItem> m_XCoordAxis; //坐标系X轴
std::shared_ptr<MyQGraphicsLineItem> m_YCoordAxis; //坐标系Y轴
std::shared_ptr<MyDieRectItem> m_dieObj;
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::string m_curFontType;
std::vector<std::shared_ptr<MyQGraphicsTextItem>> m_textItemVec;
};