Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

78 righe
2.0 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. 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. void wheelEvent(QWheelEvent *event) override;
  26. void performPaste(const QPointF& pasteCenter);
  27. signals:
  28. void itemBoundToRegister(Item*, QString);
  29. void itemResetRegister(Item*, QString);
  30. void itemSetON(QString, quint16);
  31. public slots:
  32. void onItemRequestCopy(Item*);
  33. void onItemRequestDelete(Item*);
  34. void onItemRequestBindRegister(Item*);
  35. void onItemRequestCompare(Item*);
  36. void onItemRequestReset(Item*);
  37. void onItemRequestSetON(Item*, bool isON);
  38. private:
  39. Item* anchorItemAt(const QPoint& viewPos, Item::AnchorType& anchorType);
  40. bool drawingConnection_ = false;
  41. Item* startItem_ = nullptr;
  42. Item::AnchorType startAnchor_;
  43. QGraphicsLineItem* tempLine_ = nullptr;
  44. // struct ClipInfo {
  45. // QString input;
  46. // };
  47. struct CopiedItem {
  48. QString type;
  49. QPointF pos;
  50. };
  51. struct CopiedConnection {
  52. int fromIndex;
  53. int toIndex;
  54. Item::AnchorType fromType;
  55. Item::AnchorType toType;
  56. };
  57. struct ClipInfo {
  58. QList<CopiedItem> items;
  59. QList<CopiedConnection> connections;
  60. QPointF center;
  61. };
  62. static ClipInfo clipboard_;
  63. QPointF calculateItemsCenter(const QList<QGraphicsItem*>& items);
  64. };
  65. #endif // MYGRAPHICSVIEW_H