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.layout; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.coreevent; 17 import qt.core.margins; 18 import qt.core.namespace; 19 import qt.core.object; 20 import qt.core.rect; 21 import qt.core.size; 22 import qt.helpers; 23 import qt.widgets.layoutitem; 24 import qt.widgets.sizepolicy; 25 import qt.widgets.widget; 26 27 28 29 extern(C++, class) struct QLayoutPrivate; 30 31 /// Binding for C++ class [QLayout](https://doc.qt.io/qt-6/qlayout.html). 32 abstract class /+ Q_WIDGETS_EXPORT +/ QLayout : QObject, QLayoutItemInterface 33 { 34 QLayoutItemFakeInheritance baseQLayoutItem; 35 mixin(Q_OBJECT); 36 /+ Q_DECLARE_PRIVATE(QLayout) +/ 37 38 /+ Q_PROPERTY(int spacing READ spacing WRITE setSpacing) 39 Q_PROPERTY(QMargins contentsMargins READ contentsMargins WRITE setContentsMargins 40 RESET unsetContentsMargins) 41 Q_PROPERTY(SizeConstraint sizeConstraint READ sizeConstraint WRITE setSizeConstraint) +/ 42 public: 43 enum SizeConstraint { 44 SetDefaultConstraint, 45 SetNoConstraint, 46 SetMinimumSize, 47 SetFixedSize, 48 SetMaximumSize, 49 SetMinAndMaxSize 50 } 51 /+ Q_ENUM(SizeConstraint) +/ 52 53 mixin(changeItaniumMangling(q{mangleConstructorBaseObject}, q{ 54 /+ explicit +/this(QWidget parent = null); 55 })); 56 ~this(); 57 58 /+ virtual +/ int spacing() const; 59 /+ virtual +/ void setSpacing(int); 60 61 final void setContentsMargins(int left, int top, int right, int bottom); 62 final void setContentsMargins(ref const(QMargins) margins); 63 final void unsetContentsMargins(); 64 final void getContentsMargins(int* left, int* top, int* right, int* bottom) const; 65 final QMargins contentsMargins() const; 66 final QRect contentsRect() const; 67 68 final bool setAlignment(QWidget w, /+ Qt:: +/qt.core.namespace.Alignment alignment); 69 final bool setAlignment(QLayout l, /+ Qt:: +/qt.core.namespace.Alignment alignment); 70 /+ using QLayoutItem::setAlignment; +/ 71 72 final void setSizeConstraint(SizeConstraint); 73 final SizeConstraint sizeConstraint() const; 74 final void setMenuBar(QWidget w); 75 final QWidget menuBar() const; 76 77 final QWidget parentWidget() const; 78 79 override void invalidate(); 80 override QRect geometry() const; 81 final bool activate(); 82 final void update(); 83 84 final void addWidget(QWidget w); 85 /+ virtual +/ abstract void addItem(QLayoutItem ); 86 87 final void removeWidget(QWidget w); 88 final void removeItem(QLayoutItem ); 89 90 override /+ Qt:: +/qt.core.namespace.Orientations expandingDirections() const; 91 override QSize minimumSize() const; 92 override QSize maximumSize() const; 93 /+ virtual +/ override void setGeometry(ref const(QRect)); 94 /+ virtual +/ abstract QLayoutItem itemAt(int index) const; 95 /+ virtual +/ abstract QLayoutItem takeAt(int index); 96 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 97 /+ virtual +/ int indexOf(const(QWidget) ) const; 98 })); 99 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 100 /+ virtual +/ int indexOf(const(QLayoutItem) ) const; 101 })); 102 /+ virtual +/ abstract int count() const; 103 override bool isEmpty() const; 104 override QSizePolicy.ControlTypes controlTypes() const; 105 106 /+ virtual +/ QLayoutItem replaceWidget(QWidget from, QWidget to, 107 /+ Qt:: +/qt.core.namespace.FindChildOptions options = /+ Qt:: +/qt.core.namespace.FindChildOption.FindChildrenRecursively); 108 109 final int totalMinimumHeightForWidth(int w) const; 110 final int totalHeightForWidth(int w) const; 111 final QSize totalMinimumSize() const; 112 final QSize totalMaximumSize() const; 113 final QSize totalSizeHint() const; 114 override QLayout layout(); 115 116 final void setEnabled(bool); 117 final bool isEnabled() const; 118 119 120 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 121 static QSize closestAcceptableSize(const(QWidget) w, ref const(QSize) s); 122 })); 123 124 override QSize sizeHint() const 125 { 126 assert(0); 127 } 128 override bool hasHeightForWidth() const 129 { 130 assert(0); 131 } 132 override int heightForWidth(int w) const 133 { 134 assert(0); 135 } 136 override int minimumHeightForWidth(int w) const 137 { 138 assert(0); 139 } 140 override QWidget widget() 141 { 142 assert(0); 143 } 144 override QSpacerItem spacerItem() 145 { 146 assert(0); 147 } 148 149 protected: 150 final void widgetEvent(QEvent ); 151 override void childEvent(QChildEvent e); 152 final void addChildLayout(QLayout l); 153 final void addChildWidget(QWidget w); 154 final bool adoptLayout(QLayout layout); 155 156 final QRect alignmentRect(ref const(QRect)) const; 157 protected: 158 mixin(changeItaniumMangling(q{mangleConstructorBaseObject}, q{ 159 this(ref QLayoutPrivate d, QLayout, QWidget); 160 })); 161 162 private: 163 /+ Q_DISABLE_COPY(QLayout) +/ 164 165 static void activateRecursiveHelper(QLayoutItem item); 166 167 /+ friend class QApplicationPrivate; +/ 168 /+ friend class QWidget; +/ 169 170 mixin(CREATE_CONVENIENCE_WRAPPERS); 171 } 172 173 174 //### support old includes 175