1 /* 2 * DQt - D bindings for the Qt Toolkit 3 * 4 * GNU Lesser General Public License Usage 5 * This file may be used under the terms of the GNU Lesser 6 * General Public License version 3 as published by the Free Software 7 * Foundation and appearing in the file LICENSE.LGPL3 included in the 8 * packaging of this file. Please review the following information to 9 * ensure the GNU Lesser General Public License version 3 requirements 10 * will be met: https://www.gnu.org/licenses/lgpl-3.0.html. 11 */ 12 module qt.widgets.formlayout; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.namespace; 17 import qt.core.rect; 18 import qt.core.size; 19 import qt.core.string; 20 import qt.helpers; 21 import qt.widgets.layout; 22 import qt.widgets.layoutitem; 23 import qt.widgets.widget; 24 25 /+ QT_REQUIRE_CONFIG(formlayout); +/ 26 27 28 29 extern(C++, class) struct QFormLayoutPrivate; 30 31 /// Binding for C++ class [QFormLayout](https://doc.qt.io/qt-6/qformlayout.html). 32 class /+ Q_WIDGETS_EXPORT +/ QFormLayout : QLayout 33 { 34 mixin(Q_OBJECT); 35 /+ Q_DECLARE_PRIVATE(QFormLayout) +/ 36 /+ Q_PROPERTY(FieldGrowthPolicy fieldGrowthPolicy READ fieldGrowthPolicy WRITE setFieldGrowthPolicy 37 RESET resetFieldGrowthPolicy) 38 Q_PROPERTY(RowWrapPolicy rowWrapPolicy READ rowWrapPolicy WRITE setRowWrapPolicy 39 RESET resetRowWrapPolicy) 40 Q_PROPERTY(Qt::Alignment labelAlignment READ labelAlignment WRITE setLabelAlignment 41 RESET resetLabelAlignment) 42 Q_PROPERTY(Qt::Alignment formAlignment READ formAlignment WRITE setFormAlignment 43 RESET resetFormAlignment) 44 Q_PROPERTY(int horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing) 45 Q_PROPERTY(int verticalSpacing READ verticalSpacing WRITE setVerticalSpacing) +/ 46 47 public: 48 enum FieldGrowthPolicy { 49 FieldsStayAtSizeHint, 50 ExpandingFieldsGrow, 51 AllNonFixedFieldsGrow 52 } 53 /+ Q_ENUM(FieldGrowthPolicy) +/ 54 55 enum RowWrapPolicy { 56 DontWrapRows, 57 WrapLongRows, 58 WrapAllRows 59 } 60 /+ Q_ENUM(RowWrapPolicy) +/ 61 62 enum ItemRole { 63 LabelRole = 0, 64 FieldRole = 1, 65 SpanningRole = 2 66 } 67 /+ Q_ENUM(ItemRole) +/ 68 69 struct TakeRowResult { 70 QLayoutItem labelItem; 71 QLayoutItem fieldItem; 72 } 73 74 /+ explicit +/this(QWidget parent = null); 75 ~this(); 76 77 final void setFieldGrowthPolicy(FieldGrowthPolicy policy); 78 final FieldGrowthPolicy fieldGrowthPolicy() const; 79 final void setRowWrapPolicy(RowWrapPolicy policy); 80 final RowWrapPolicy rowWrapPolicy() const; 81 final void setLabelAlignment(/+ Qt:: +/qt.core.namespace.Alignment alignment); 82 final /+ Qt:: +/qt.core.namespace.Alignment labelAlignment() const; 83 final void setFormAlignment(/+ Qt:: +/qt.core.namespace.Alignment alignment); 84 final /+ Qt:: +/qt.core.namespace.Alignment formAlignment() const; 85 86 final void setHorizontalSpacing(int spacing); 87 final int horizontalSpacing() const; 88 final void setVerticalSpacing(int spacing); 89 final int verticalSpacing() const; 90 91 override int spacing() const; 92 override void setSpacing(int); 93 94 final void addRow(QWidget label, QWidget field); 95 final void addRow(QWidget label, QLayout field); 96 final void addRow(ref const(QString) labelText, QWidget field); 97 final void addRow(ref const(QString) labelText, QLayout field); 98 final void addRow(QWidget widget); 99 final void addRow(QLayout layout); 100 101 final void insertRow(int row, QWidget label, QWidget field); 102 final void insertRow(int row, QWidget label, QLayout field); 103 final void insertRow(int row, ref const(QString) labelText, QWidget field); 104 final void insertRow(int row, ref const(QString) labelText, QLayout field); 105 final void insertRow(int row, QWidget widget); 106 final void insertRow(int row, QLayout layout); 107 108 final void removeRow(int row); 109 final void removeRow(QWidget widget); 110 final void removeRow(QLayout layout); 111 112 final TakeRowResult takeRow(int row); 113 final TakeRowResult takeRow(QWidget widget); 114 final TakeRowResult takeRow(QLayout layout); 115 116 final void setItem(int row, ItemRole role, QLayoutItem item); 117 final void setWidget(int row, ItemRole role, QWidget widget); 118 final void setLayout(int row, ItemRole role, QLayout layout); 119 120 final QLayoutItem itemAt(int row, ItemRole role) const; 121 final void getItemPosition(int index, int* rowPtr, ItemRole* rolePtr) const; 122 final void getWidgetPosition(QWidget widget, int* rowPtr, ItemRole* rolePtr) const; 123 final void getLayoutPosition(QLayout layout, int* rowPtr, ItemRole* rolePtr) const; 124 final QWidget labelForField(QWidget field) const; 125 final QWidget labelForField(QLayout field) const; 126 127 // reimplemented from QLayout 128 override void addItem(QLayoutItem item); 129 override QLayoutItem itemAt(int index) const; 130 override QLayoutItem takeAt(int index); 131 132 override void setGeometry(ref const(QRect) rect); 133 override QSize minimumSize() const; 134 override QSize sizeHint() const; 135 override void invalidate(); 136 137 override bool hasHeightForWidth() const; 138 override int heightForWidth(int width) const; 139 override /+ Qt:: +/qt.core.namespace.Orientations expandingDirections() const; 140 override int count() const; 141 142 final int rowCount() const; 143 144 /+ #if 0 145 void dump() const; 146 #endif +/ 147 148 private: 149 final void resetFieldGrowthPolicy(); 150 final void resetRowWrapPolicy(); 151 final void resetLabelAlignment(); 152 final void resetFormAlignment(); 153 mixin(CREATE_CONVENIENCE_WRAPPERS); 154 } 155 156 /+ Q_DECLARE_TYPEINFO(QFormLayout::TakeRowResult, Q_PRIMITIVE_TYPE); +/ 157