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.

57 lines
1.5 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. #include "creatitem.h"
  12. class MyGraphicsView : public QGraphicsView
  13. {
  14. Q_OBJECT
  15. public:
  16. explicit MyGraphicsView(QWidget *parent = nullptr);
  17. protected:
  18. void dragEnterEvent(QDragEnterEvent *event) override;
  19. void dragMoveEvent(QDragMoveEvent *event) override;
  20. void dropEvent(QDropEvent *event) override;
  21. void keyPressEvent(QKeyEvent *event) override;
  22. void contextMenuEvent(QContextMenuEvent *event) override;
  23. void mousePressEvent(QMouseEvent *event) override;
  24. void mouseMoveEvent(QMouseEvent *event) override;
  25. void mouseReleaseEvent(QMouseEvent *event) override;
  26. signals:
  27. void itemBoundToRegister(Item*, QString);
  28. void itemResetRegister(Item*, QString);
  29. private:
  30. Item* anchorItemAt(const QPoint& viewPos, Item::AnchorType& anchorType);
  31. bool drawingConnection_ = false;
  32. Item* startItem_ = nullptr;
  33. Item::AnchorType startAnchor_;
  34. QGraphicsLineItem* tempLine_ = nullptr;
  35. struct ClipInfo {
  36. QString input;
  37. };
  38. static ClipInfo clipboard_;
  39. public slots:
  40. void onItemRequestCopy(Item*);
  41. void onItemRequestDelete(Item*);
  42. void onItemRequestBindRegister(Item*);
  43. void onItemRequestCompare(Item*);
  44. void onItemRequestReset(Item*);
  45. };
  46. #endif // MYGRAPHICSVIEW_H