You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.2 KiB

  1. #ifndef MYGRAPHICSVIEW_H
  2. #define MYGRAPHICSVIEW_H
  3. #include <QGraphicsView>
  4. #include <QDropEvent>
  5. #include <QDragEnterEvent>
  6. #include <QMimeData>
  7. #include <QKeyEvent>
  8. #include <QMouseEvent>
  9. #include "item.h"
  10. #include "connection.h"
  11. class MyGraphicsView : public QGraphicsView
  12. {
  13. Q_OBJECT
  14. public:
  15. explicit MyGraphicsView(QWidget *parent = nullptr);
  16. protected:
  17. void dragEnterEvent(QDragEnterEvent *event) override;
  18. void dragMoveEvent(QDragMoveEvent *event) override;
  19. void dropEvent(QDropEvent *event) override;
  20. void keyPressEvent(QKeyEvent *event) override;
  21. void contextMenuEvent(QContextMenuEvent *event) override;
  22. void mousePressEvent(QMouseEvent *event) override;
  23. void mouseMoveEvent(QMouseEvent *event) override;
  24. void mouseReleaseEvent(QMouseEvent *event) override;
  25. private:
  26. Item* anchorItemAt(const QPoint& viewPos, Item::AnchorType& anchorType);
  27. bool drawingConnection_ = false;
  28. Item* startItem_ = nullptr;
  29. Item::AnchorType startAnchor_;
  30. QGraphicsLineItem* tempLine_ = nullptr;
  31. struct ClipInfo {
  32. QString input;
  33. };
  34. static ClipInfo clipboard_;
  35. public slots:
  36. void onItemRequestCopy(Item*);
  37. void onItemRequestDelete(Item*);
  38. };
  39. #endif // MYGRAPHICSVIEW_H