Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-08 09:22:28

0001 // Copyright (C) 2016 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 // Qt-Security score:significant reason:default
0004 
0005 #ifndef QFORMLAYOUT_H
0006 #define QFORMLAYOUT_H
0007 
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtWidgets/QLayout>
0010 
0011 QT_REQUIRE_CONFIG(formlayout);
0012 
0013 QT_BEGIN_NAMESPACE
0014 
0015 
0016 class QFormLayoutPrivate;
0017 
0018 class Q_WIDGETS_EXPORT QFormLayout : public QLayout
0019 {
0020     Q_OBJECT
0021     Q_DECLARE_PRIVATE(QFormLayout)
0022     Q_PROPERTY(FieldGrowthPolicy fieldGrowthPolicy READ fieldGrowthPolicy WRITE setFieldGrowthPolicy
0023                RESET resetFieldGrowthPolicy)
0024     Q_PROPERTY(RowWrapPolicy rowWrapPolicy READ rowWrapPolicy WRITE setRowWrapPolicy
0025                RESET resetRowWrapPolicy)
0026     Q_PROPERTY(Qt::Alignment labelAlignment READ labelAlignment WRITE setLabelAlignment
0027                RESET resetLabelAlignment)
0028     Q_PROPERTY(Qt::Alignment formAlignment READ formAlignment WRITE setFormAlignment
0029                RESET resetFormAlignment)
0030     Q_PROPERTY(int horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing)
0031     Q_PROPERTY(int verticalSpacing READ verticalSpacing WRITE setVerticalSpacing)
0032 
0033 public:
0034     enum FieldGrowthPolicy {
0035         FieldsStayAtSizeHint,
0036         ExpandingFieldsGrow,
0037         AllNonFixedFieldsGrow
0038     };
0039     Q_ENUM(FieldGrowthPolicy)
0040 
0041     enum RowWrapPolicy {
0042         DontWrapRows,
0043         WrapLongRows,
0044         WrapAllRows
0045     };
0046     Q_ENUM(RowWrapPolicy)
0047 
0048     enum ItemRole {
0049         LabelRole = 0,
0050         FieldRole = 1,
0051         SpanningRole = 2
0052     };
0053     Q_ENUM(ItemRole)
0054 
0055     struct TakeRowResult {
0056         QLayoutItem *labelItem;
0057         QLayoutItem *fieldItem;
0058     };
0059 
0060     explicit QFormLayout(QWidget *parent = nullptr);
0061     ~QFormLayout();
0062 
0063     void setFieldGrowthPolicy(FieldGrowthPolicy policy);
0064     FieldGrowthPolicy fieldGrowthPolicy() const;
0065     void setRowWrapPolicy(RowWrapPolicy policy);
0066     RowWrapPolicy rowWrapPolicy() const;
0067     void setLabelAlignment(Qt::Alignment alignment);
0068     Qt::Alignment labelAlignment() const;
0069     void setFormAlignment(Qt::Alignment alignment);
0070     Qt::Alignment formAlignment() const;
0071 
0072     void setHorizontalSpacing(int spacing);
0073     int horizontalSpacing() const;
0074     void setVerticalSpacing(int spacing);
0075     int verticalSpacing() const;
0076 
0077     int spacing() const override;
0078     void setSpacing(int) override;
0079 
0080     void addRow(QWidget *label, QWidget *field);
0081     void addRow(QWidget *label, QLayout *field);
0082     void addRow(const QString &labelText, QWidget *field);
0083     void addRow(const QString &labelText, QLayout *field);
0084     void addRow(QWidget *widget);
0085     void addRow(QLayout *layout);
0086 
0087     void insertRow(int row, QWidget *label, QWidget *field);
0088     void insertRow(int row, QWidget *label, QLayout *field);
0089     void insertRow(int row, const QString &labelText, QWidget *field);
0090     void insertRow(int row, const QString &labelText, QLayout *field);
0091     void insertRow(int row, QWidget *widget);
0092     void insertRow(int row, QLayout *layout);
0093 
0094     void removeRow(int row);
0095     void removeRow(QWidget *widget);
0096     void removeRow(QLayout *layout);
0097 
0098     TakeRowResult takeRow(int row);
0099     TakeRowResult takeRow(QWidget *widget);
0100     TakeRowResult takeRow(QLayout *layout);
0101 
0102     void setItem(int row, ItemRole role, QLayoutItem *item);
0103     void setWidget(int row, ItemRole role, QWidget *widget);
0104     void setLayout(int row, ItemRole role, QLayout *layout);
0105 
0106     void setRowVisible(int row, bool on);
0107     void setRowVisible(QWidget *widget, bool on);
0108     void setRowVisible(QLayout *layout, bool on);
0109 
0110     bool isRowVisible(int row) const;
0111     bool isRowVisible(QWidget *widget) const;
0112     bool isRowVisible(QLayout *layout) const;
0113 
0114     QLayoutItem *itemAt(int row, ItemRole role) const;
0115     void getItemPosition(int index, int *rowPtr, ItemRole *rolePtr) const;
0116     void getWidgetPosition(QWidget *widget, int *rowPtr, ItemRole *rolePtr) const;
0117     void getLayoutPosition(QLayout *layout, int *rowPtr, ItemRole *rolePtr) const;
0118     QWidget *labelForField(QWidget *field) const;
0119     QWidget *labelForField(QLayout *field) const;
0120 
0121     // reimplemented from QLayout
0122     void addItem(QLayoutItem *item) override;
0123     QLayoutItem *itemAt(int index) const override;
0124     QLayoutItem *takeAt(int index) override;
0125 
0126     void setGeometry(const QRect &rect) override;
0127     QSize minimumSize() const override;
0128     QSize sizeHint() const override;
0129     void invalidate() override;
0130 
0131     bool hasHeightForWidth() const override;
0132     int heightForWidth(int width) const override;
0133     Qt::Orientations expandingDirections() const override;
0134     int count() const override;
0135 
0136     int rowCount() const;
0137 
0138 #if 0
0139     void dump() const;
0140 #endif
0141 
0142 private:
0143     void resetFieldGrowthPolicy();
0144     void resetRowWrapPolicy();
0145     void resetLabelAlignment();
0146     void resetFormAlignment();
0147 };
0148 
0149 Q_DECLARE_TYPEINFO(QFormLayout::TakeRowResult, Q_PRIMITIVE_TYPE);
0150 
0151 QT_END_NAMESPACE
0152 
0153 #endif