GridFlowLayout.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef GRIDFLOWLAYOUT_H
  2. #define GRIDFLOWLAYOUT_H
  3. #include <QLayout>
  4. #include <QList>
  5. #include <QVector>
  6. class GridFlowLayout :
  7. public QLayout
  8. {
  9. QList<QLayoutItem*> items;
  10. QVector<int> widths;
  11. QVector<int> heights;
  12. public:
  13. GridFlowLayout(QWidget* parent);
  14. void addItem (QLayoutItem* item) override;
  15. QLayoutItem* itemAt (int index) const override;
  16. QLayoutItem* takeAt (int index) override;
  17. bool hasHeightForWidth (void) const override;
  18. int heightForWidth (int width) const override;
  19. int count (void) const override;
  20. Qt::Orientations expandingDirections (void) const override;
  21. QSize minimumSize (void) const override;
  22. QSize sizeHint (void) const override;
  23. void setGeometry (const QRect& rect) override;
  24. private:
  25. void applyLayout (int rows, const QVector<QSize>& sizeHints,
  26. const QRect& area);
  27. void calculateRows (int rows, const QVector<QSize>& sizeHints);
  28. bool checkRows (int rows, const QRect& rect,
  29. const QVector<QSize>& sizeHints);
  30. };
  31. #endif // GRIDFLOWLAYOUT_H