scene-tree.hpp 1.3 KB

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