FlowLayout.hpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /******************************************************************************
  2. Example provided by Qt
  3. <https://doc.qt.io/qt-6/qtwidgets-layouts-flowlayout-example.html>
  4. Copyright (C) 2016 The Qt Company Ltd.
  5. SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
  6. ******************************************************************************/
  7. #pragma once
  8. #include <QLayout>
  9. #include <QStyle>
  10. class FlowLayout : public QLayout {
  11. public:
  12. explicit FlowLayout(QWidget *parent, int margin = -1, int hSpacing = -1, int vSpacing = -1);
  13. explicit FlowLayout(int margin = -1, int hSpacing = -1, int vSpacing = -1);
  14. ~FlowLayout();
  15. void addItem(QLayoutItem *item) override;
  16. int horizontalSpacing() const;
  17. int verticalSpacing() const;
  18. Qt::Orientations expandingDirections() const override;
  19. bool hasHeightForWidth() const override;
  20. int heightForWidth(int) const override;
  21. int count() const override;
  22. QLayoutItem *itemAt(int index) const override;
  23. QSize minimumSize() const override;
  24. void setGeometry(const QRect &rect) override;
  25. QSize sizeHint() const override;
  26. QLayoutItem *takeAt(int index) override;
  27. private:
  28. int doLayout(const QRect &rect, bool testOnly) const;
  29. int smartSpacing(QStyle::PixelMetric pm) const;
  30. QList<QLayoutItem *> itemList;
  31. int m_hSpace;
  32. int m_vSpace;
  33. };