選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

51 行
1.3 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. private:
  27. Item* anchorItemAt(const QPoint& viewPos, Item::AnchorType& anchorType);
  28. bool drawingConnection_ = false;
  29. Item* startItem_ = nullptr;
  30. Item::AnchorType startAnchor_;
  31. QGraphicsLineItem* tempLine_ = nullptr;
  32. struct ClipInfo {
  33. QString input;
  34. };
  35. static ClipInfo clipboard_;
  36. public slots:
  37. void onItemRequestCopy(Item*);
  38. void onItemRequestDelete(Item*);
  39. void onItemRequestBindRegister(Item*);
  40. };
  41. #endif // MYGRAPHICSVIEW_H