code_app/app/scanner/graphicsscene.h

79 lines
1.4 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();
private slots:
void on_textChanged();
};
class GraphicsScene : public QGraphicsScene
{
Q_OBJECT
public:
enum STATUS
{
Normal = 0,
CreateRect,
CreateEllipse,
CreateLine,
CreateText,
CreateArrow,
CreatePen,
Erase
};
enum
{
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 createShape(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