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++
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;
|
|
};
|