SceneTree.hpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include <QListWidget>
  3. #include <QObject>
  4. #include <QResizeEvent>
  5. #include <QWidget>
  6. class SceneTree : public QListWidget {
  7. Q_OBJECT
  8. Q_PROPERTY(int gridItemWidth READ GetGridItemWidth WRITE SetGridItemWidth DESIGNABLE true)
  9. Q_PROPERTY(int gridItemHeight READ GetGridItemHeight WRITE SetGridItemHeight DESIGNABLE true)
  10. bool gridMode = false;
  11. int maxWidth = 150;
  12. int itemHeight = 24;
  13. public:
  14. void SetGridMode(bool grid);
  15. bool GetGridMode();
  16. void SetGridItemWidth(int width);
  17. void SetGridItemHeight(int height);
  18. int GetGridItemWidth();
  19. int GetGridItemHeight();
  20. explicit SceneTree(QWidget *parent = nullptr);
  21. private:
  22. void RepositionGrid(QDragMoveEvent *event = nullptr);
  23. protected:
  24. virtual bool eventFilter(QObject *obj, QEvent *event) override;
  25. virtual void resizeEvent(QResizeEvent *event) override;
  26. virtual void startDrag(Qt::DropActions supportedActions) override;
  27. virtual void dropEvent(QDropEvent *event) override;
  28. virtual void dragMoveEvent(QDragMoveEvent *event) override;
  29. virtual void dragLeaveEvent(QDragLeaveEvent *event) override;
  30. virtual void rowsInserted(const QModelIndex &parent, int start, int end) override;
  31. #if QT_VERSION < QT_VERSION_CHECK(6, 4, 3)
  32. virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) override;
  33. #endif
  34. signals:
  35. void scenesReordered();
  36. };