scene-tree.hpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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
  8. SetGridItemWidth DESIGNABLE true)
  9. Q_PROPERTY(int gridItemHeight READ GetGridItemHeight WRITE
  10. SetGridItemHeight DESIGNABLE true)
  11. bool gridMode = false;
  12. int maxWidth = 150;
  13. int itemHeight = 24;
  14. public:
  15. void SetGridMode(bool grid);
  16. bool GetGridMode();
  17. void SetGridItemWidth(int width);
  18. void SetGridItemHeight(int height);
  19. int GetGridItemWidth();
  20. int GetGridItemHeight();
  21. explicit SceneTree(QWidget *parent = nullptr);
  22. private:
  23. void RepositionGrid(QDragMoveEvent *event = nullptr);
  24. protected:
  25. virtual bool eventFilter(QObject *obj, QEvent *event) override;
  26. virtual void resizeEvent(QResizeEvent *event) override;
  27. virtual void startDrag(Qt::DropActions supportedActions) override;
  28. virtual void dropEvent(QDropEvent *event) override;
  29. virtual void dragMoveEvent(QDragMoveEvent *event) override;
  30. virtual void dragLeaveEvent(QDragLeaveEvent *event) override;
  31. virtual void rowsInserted(const QModelIndex &parent, int start,
  32. int end) override;
  33. virtual void
  34. selectionChanged(const QItemSelection &selected,
  35. const QItemSelection &deselected) override;
  36. signals:
  37. void scenesReordered();
  38. };