File indexing completed on 2026-09-19 09:34:25
0001
0002
0003
0004
0005 #ifndef QLAYOUT_H
0006 #define QLAYOUT_H
0007
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtCore/qobject.h>
0010 #include <QtWidgets/qlayoutitem.h>
0011 #include <QtWidgets/qsizepolicy.h>
0012 #include <QtCore/qrect.h>
0013 #include <QtCore/qmargins.h>
0014
0015 #include <limits.h>
0016
0017 QT_BEGIN_NAMESPACE
0018
0019
0020 class QLayout;
0021 class QSize;
0022
0023
0024 class QLayoutPrivate;
0025
0026 class Q_WIDGETS_EXPORT QLayout : public QObject, public QLayoutItem
0027 {
0028 Q_OBJECT
0029 Q_DECLARE_PRIVATE(QLayout)
0030
0031 Q_PROPERTY(int spacing READ spacing WRITE setSpacing)
0032 Q_PROPERTY(QMargins contentsMargins READ contentsMargins WRITE setContentsMargins
0033 RESET unsetContentsMargins)
0034
0035 Q_PROPERTY(SizeConstraint sizeConstraint READ sizeConstraint WRITE setSizeConstraint)
0036 Q_PROPERTY(SizeConstraint horizontalSizeConstraint READ horizontalSizeConstraint WRITE setHorizontalSizeConstraint)
0037 Q_PROPERTY(SizeConstraint verticalSizeConstraint READ verticalSizeConstraint WRITE setVerticalSizeConstraint)
0038
0039 public:
0040 enum SizeConstraint {
0041 SetDefaultConstraint,
0042 SetNoConstraint,
0043 SetMinimumSize,
0044 SetFixedSize,
0045 SetMaximumSize,
0046 SetMinAndMaxSize
0047 };
0048 Q_ENUM(SizeConstraint)
0049
0050 explicit QLayout(QWidget *parent = nullptr);
0051 ~QLayout();
0052
0053 virtual int spacing() const;
0054 virtual void setSpacing(int);
0055
0056 void setContentsMargins(int left, int top, int right, int bottom);
0057 void setContentsMargins(const QMargins &margins);
0058 void unsetContentsMargins();
0059 void getContentsMargins(int *left, int *top, int *right, int *bottom) const;
0060 QMargins contentsMargins() const;
0061 QRect contentsRect() const;
0062
0063 bool setAlignment(QWidget *w, Qt::Alignment alignment);
0064 bool setAlignment(QLayout *l, Qt::Alignment alignment);
0065 using QLayoutItem::setAlignment;
0066
0067 void setSizeConstraint(SizeConstraint constraint);
0068 SizeConstraint sizeConstraint() const;
0069
0070 void setSizeConstraints(SizeConstraint horizontal, SizeConstraint vertical);
0071
0072 void setHorizontalSizeConstraint(SizeConstraint constraint);
0073 SizeConstraint horizontalSizeConstraint() const;
0074
0075 void setVerticalSizeConstraint(SizeConstraint constraint);
0076 SizeConstraint verticalSizeConstraint() const;
0077
0078 void setMenuBar(QWidget *w);
0079 QWidget *menuBar() const;
0080
0081 QWidget *parentWidget() const;
0082
0083 void invalidate() override;
0084 QRect geometry() const override;
0085 bool activate();
0086 void update();
0087
0088 void addWidget(QWidget *w);
0089 virtual void addItem(QLayoutItem *) = 0;
0090
0091 void removeWidget(QWidget *w);
0092 void removeItem(QLayoutItem *);
0093
0094 Qt::Orientations expandingDirections() const override;
0095 QSize minimumSize() const override;
0096 QSize maximumSize() const override;
0097 virtual void setGeometry(const QRect&) override;
0098 virtual QLayoutItem *itemAt(int index) const = 0;
0099 virtual QLayoutItem *takeAt(int index) = 0;
0100 virtual int indexOf(const QWidget *) const;
0101 virtual int indexOf(const QLayoutItem *) const;
0102 virtual int count() const = 0;
0103 bool isEmpty() const override;
0104 QSizePolicy::ControlTypes controlTypes() const override;
0105
0106 virtual QLayoutItem *replaceWidget(QWidget *from, QWidget *to,
0107 Qt::FindChildOptions options = Qt::FindChildrenRecursively);
0108
0109 int totalMinimumHeightForWidth(int w) const;
0110 int totalHeightForWidth(int w) const;
0111 QSize totalMinimumSize() const;
0112 QSize totalMaximumSize() const;
0113 QSize totalSizeHint() const;
0114 QLayout *layout() override;
0115
0116 void setEnabled(bool);
0117 bool isEnabled() const;
0118
0119
0120 static QSize closestAcceptableSize(const QWidget *w, const QSize &s);
0121
0122 protected:
0123 void widgetEvent(QEvent *);
0124 void childEvent(QChildEvent *e) override;
0125 void addChildLayout(QLayout *l);
0126 void addChildWidget(QWidget *w);
0127 bool adoptLayout(QLayout *layout);
0128
0129 QRect alignmentRect(const QRect&) const;
0130 protected:
0131 QLayout(QLayoutPrivate &d, QLayout*, QWidget*);
0132
0133 private:
0134 Q_DISABLE_COPY(QLayout)
0135
0136 static void activateRecursiveHelper(QLayoutItem *item);
0137
0138 friend class QApplicationPrivate;
0139 friend class QWidget;
0140
0141 };
0142
0143 QT_END_NAMESPACE
0144
0145
0146 #include <QtWidgets/qboxlayout.h>
0147 #include <QtWidgets/qgridlayout.h>
0148
0149 #endif