84 lines
1.5 KiB
C++
84 lines
1.5 KiB
C++
#ifndef GRAPHICSSCENE_H
|
|
#define GRAPHICSSCENE_H
|
|
|
|
#include <QGraphicsScene>
|
|
#include <QGraphicsPixmapItem>
|
|
|
|
#include <QTextEdit>
|
|
|
|
class GraphicsTextEdit : public QTextEdit
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
GraphicsTextEdit(QWidget* parent = nullptr);
|
|
|
|
~GraphicsTextEdit();
|
|
|
|
void setDefeaultColor(const QColor& color);
|
|
|
|
private slots:
|
|
void on_textChanged();
|
|
private:
|
|
QColor m_defeaultColor;
|
|
};
|
|
|
|
class GraphicsScene : public QGraphicsScene
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
enum STATUS
|
|
{
|
|
Normal = 0,
|
|
CreateRect,
|
|
CreateEllipse,
|
|
CreateLine,
|
|
CreateText,
|
|
CreateArrow,
|
|
CreatePen,
|
|
Erase
|
|
};
|
|
|
|
enum
|
|
{
|
|
None,
|
|
Rect,
|
|
Ellipse,
|
|
Line,
|
|
Text,
|
|
Arrow,
|
|
Pen
|
|
};
|
|
public:
|
|
GraphicsScene(QObject* parent = nullptr);
|
|
|
|
~GraphicsScene();
|
|
|
|
void setColor(const QColor& color);
|
|
|
|
void setTextSize(int size);
|
|
|
|
void setLineWidth(int width);
|
|
|
|
void setItemFlag(int flag);
|
|
|
|
void unDo();
|
|
private:
|
|
QPainterPath createArrowPath(const QPointF& p1, const QPointF& p2);
|
|
|
|
protected:
|
|
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);
|
|
virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
|
|
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);
|
|
private:
|
|
STATUS m_status;
|
|
QGraphicsItem* m_activeItem;
|
|
int m_btn_pressed;
|
|
QPointF m_startPoint;
|
|
QPen m_pen;
|
|
QBrush m_brush;
|
|
QFont m_font;
|
|
GraphicsTextEdit* m_edit;
|
|
};
|
|
|
|
#endif // GRAPHICSSCENE_H
|