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.

59 lines
1.6 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. void wheelEvent(QWheelEvent *event) override;
  27. signals:
  28. void itemBoundToRegister(Item*, QString);
  29. void itemResetRegister(Item*, QString);
  30. void itemSetON(QString, quint16);
  31. private:
  32. Item* anchorItemAt(const QPoint& viewPos, Item::AnchorType& anchorType);
  33. bool drawingConnection_ = false;
  34. Item* startItem_ = nullptr;
  35. Item::AnchorType startAnchor_;
  36. QGraphicsLineItem* tempLine_ = nullptr;
  37. struct ClipInfo {
  38. QString input;
  39. };
  40. static ClipInfo clipboard_;
  41. public slots:
  42. void onItemRequestCopy(Item*);
  43. void onItemRequestDelete(Item*);
  44. void onItemRequestBindRegister(Item*);
  45. void onItemRequestCompare(Item*);
  46. void onItemRequestReset(Item*);
  47. void onItemRequestSetON(Item*, bool isON);
  48. };
  49. #endif // MYGRAPHICSVIEW_H