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.combobox; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.abstractitemmodel; 17 import qt.core.coreevent; 18 import qt.core.namespace; 19 import qt.core.size; 20 import qt.core.string; 21 import qt.core.stringlist; 22 import qt.core.variant; 23 import qt.gui.event; 24 import qt.gui.icon; 25 import qt.helpers; 26 import qt.widgets.abstractitemdelegate; 27 import qt.widgets.abstractitemview; 28 import qt.widgets.completer; 29 import qt.widgets.lineedit; 30 import qt.widgets.styleoption; 31 import qt.widgets.widget; 32 version(QT_NO_VALIDATOR){}else 33 import qt.gui.validator; 34 35 /+ QT_REQUIRE_CONFIG(combobox); +/ 36 37 38 extern(C++, class) struct QComboBoxPrivate; 39 40 /// Binding for C++ class [QComboBox](https://doc.qt.io/qt-6/qcombobox.html). 41 class /+ Q_WIDGETS_EXPORT +/ QComboBox : QWidget 42 { 43 mixin(Q_OBJECT); 44 45 /+ Q_PROPERTY(bool editable READ isEditable WRITE setEditable) 46 Q_PROPERTY(int count READ count) 47 Q_PROPERTY(QString currentText READ currentText WRITE setCurrentText NOTIFY currentTextChanged 48 USER true) 49 Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) 50 Q_PROPERTY(QVariant currentData READ currentData) 51 Q_PROPERTY(int maxVisibleItems READ maxVisibleItems WRITE setMaxVisibleItems) 52 Q_PROPERTY(int maxCount READ maxCount WRITE setMaxCount) 53 Q_PROPERTY(InsertPolicy insertPolicy READ insertPolicy WRITE setInsertPolicy) 54 Q_PROPERTY(SizeAdjustPolicy sizeAdjustPolicy READ sizeAdjustPolicy WRITE setSizeAdjustPolicy) 55 Q_PROPERTY(int minimumContentsLength READ minimumContentsLength WRITE setMinimumContentsLength) 56 Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) 57 Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText) 58 Q_PROPERTY(bool duplicatesEnabled READ duplicatesEnabled WRITE setDuplicatesEnabled) 59 Q_PROPERTY(bool frame READ hasFrame WRITE setFrame) 60 Q_PROPERTY(int modelColumn READ modelColumn WRITE setModelColumn) +/ 61 62 public: 63 /+ explicit +/this(QWidget parent = null); 64 ~this(); 65 66 final int maxVisibleItems() const; 67 final void setMaxVisibleItems(int maxItems); 68 69 final int count() const; 70 final void setMaxCount(int max); 71 final int maxCount() const; 72 73 final bool duplicatesEnabled() const; 74 final void setDuplicatesEnabled(bool enable); 75 76 final void setFrame(bool); 77 final bool hasFrame() const; 78 79 /+ pragma(inline, true) final int findText(ref const(QString) text, 80 /+ Qt:: +/qt.core.namespace.MatchFlags flags = static_cast!(/+ Qt:: +/qt.core.namespace.MatchFlags)(/+ Qt:: +/qt.core.namespace.MatchFlag.MatchExactly|/+ Qt:: +/qt.core.namespace.MatchFlag.MatchCaseSensitive)) const 81 { return findData(text, /+ Qt:: +/qt.core.namespace.ItemDataRole.DisplayRole, flags); } 82 final int findData(ref const(QVariant) data, int role = /+ Qt:: +/qt.core.namespace.ItemDataRole.UserRole, 83 /+ Qt:: +/qt.core.namespace.MatchFlags flags = static_cast!(/+ Qt:: +/qt.core.namespace.MatchFlags)(/+ Qt:: +/qt.core.namespace.MatchFlag.MatchExactly|/+ Qt:: +/qt.core.namespace.MatchFlag.MatchCaseSensitive)) const; 84 +/ 85 enum InsertPolicy { 86 NoInsert, 87 InsertAtTop, 88 InsertAtCurrent, 89 InsertAtBottom, 90 InsertAfterCurrent, 91 InsertBeforeCurrent, 92 InsertAlphabetically 93 } 94 /+ Q_ENUM(InsertPolicy) +/ 95 96 final InsertPolicy insertPolicy() const; 97 final void setInsertPolicy(InsertPolicy policy); 98 99 enum SizeAdjustPolicy { 100 AdjustToContents, 101 AdjustToContentsOnFirstShow, 102 AdjustToMinimumContentsLengthWithIcon 103 } 104 /+ Q_ENUM(SizeAdjustPolicy) +/ 105 106 final SizeAdjustPolicy sizeAdjustPolicy() const; 107 final void setSizeAdjustPolicy(SizeAdjustPolicy policy); 108 final int minimumContentsLength() const; 109 final void setMinimumContentsLength(int characters); 110 final QSize iconSize() const; 111 final void setIconSize(ref const(QSize) size); 112 113 final void setPlaceholderText(ref const(QString) placeholderText); 114 final QString placeholderText() const; 115 116 final bool isEditable() const; 117 final void setEditable(bool editable); 118 final void setLineEdit(QLineEdit edit); 119 final QLineEdit lineEdit() const; 120 /+ #ifndef QT_NO_VALIDATOR +/ 121 version(QT_NO_VALIDATOR){}else 122 { 123 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 124 final void setValidator(const(QValidator) v); 125 })); 126 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 127 final const(QValidator) validator() const; 128 })); 129 } 130 /+ #endif 131 132 #if QT_CONFIG(completer) +/ 133 final void setCompleter(QCompleter c); 134 final QCompleter completer() const; 135 /+ #endif +/ 136 137 final QAbstractItemDelegate itemDelegate() const; 138 final void setItemDelegate(QAbstractItemDelegate delegate_); 139 140 final QAbstractItemModel model() const; 141 /+ virtual +/ void setModel(QAbstractItemModel model); 142 143 final QModelIndex rootModelIndex() const; 144 final void setRootModelIndex(ref const(QModelIndex) index); 145 146 final int modelColumn() const; 147 final void setModelColumn(int visibleColumn); 148 149 final int currentIndex() const; 150 final QString currentText() const; 151 final QVariant currentData(int role = /+ Qt:: +/qt.core.namespace.ItemDataRole.UserRole) const; 152 153 final QString itemText(int index) const; 154 final QIcon itemIcon(int index) const; 155 final QVariant itemData(int index, int role = /+ Qt:: +/qt.core.namespace.ItemDataRole.UserRole) const; 156 157 pragma(inline, true) final void addItem(ref const(QString) atext, ref const(QVariant) auserData = globalInitVar!QVariant) 158 { insertItem(count(), atext, auserData); } 159 pragma(inline, true) final void addItem(ref const(QIcon) aicon, ref const(QString) atext, 160 ref const(QVariant) auserData = globalInitVar!QVariant) 161 { insertItem(count(), aicon, atext, auserData); } 162 pragma(inline, true) final void addItems(ref const(QStringList) texts) 163 { insertItems(count(), texts); } 164 165 pragma(inline, true) final void insertItem(int aindex, ref const(QString) atext, ref const(QVariant) auserData = globalInitVar!QVariant) 166 { auto tmp = QIcon(); insertItem(aindex, tmp, atext, auserData); } 167 final void insertItem(int index, ref const(QIcon) icon, ref const(QString) text, 168 ref const(QVariant) userData = globalInitVar!QVariant); 169 final void insertItems(int index, ref const(QStringList) texts); 170 final void insertSeparator(int index); 171 172 final void removeItem(int index); 173 174 final void setItemText(int index, ref const(QString) text); 175 final void setItemIcon(int index, ref const(QIcon) icon); 176 final void setItemData(int index, ref const(QVariant) value, int role = /+ Qt:: +/qt.core.namespace.ItemDataRole.UserRole); 177 178 final QAbstractItemView view() const; 179 final void setView(QAbstractItemView itemView); 180 181 override QSize sizeHint() const; 182 override QSize minimumSizeHint() const; 183 184 /+ virtual +/ void showPopup(); 185 /+ virtual +/ void hidePopup(); 186 187 override bool event(QEvent event); 188 override QVariant inputMethodQuery(/+ Qt:: +/qt.core.namespace.InputMethodQuery) const; 189 @QInvokable final QVariant inputMethodQuery(/+ Qt:: +/qt.core.namespace.InputMethodQuery query, ref const(QVariant) argument) const; 190 191 public /+ Q_SLOTS +/: 192 @QSlot final void clear(); 193 @QSlot final void clearEditText(); 194 @QSlot final void setEditText(ref const(QString) text); 195 @QSlot final void setCurrentIndex(int index); 196 @QSlot final void setCurrentText(ref const(QString) text); 197 198 /+ Q_SIGNALS +/public: 199 @QSignal final void editTextChanged(ref const(QString) ); 200 @QSignal final void activated(int index); 201 @QSignal final void textActivated(ref const(QString) ); 202 @QSignal final void highlighted(int index); 203 @QSignal final void textHighlighted(ref const(QString) ); 204 @QSignal final void currentIndexChanged(int index); 205 @QSignal final void currentTextChanged(ref const(QString) ); 206 207 protected: 208 override void focusInEvent(QFocusEvent e); 209 override void focusOutEvent(QFocusEvent e); 210 override void changeEvent(QEvent e); 211 override void resizeEvent(QResizeEvent e); 212 override void paintEvent(QPaintEvent e); 213 override void showEvent(QShowEvent e); 214 override void hideEvent(QHideEvent e); 215 override void mousePressEvent(QMouseEvent e); 216 override void mouseReleaseEvent(QMouseEvent e); 217 override void keyPressEvent(QKeyEvent e); 218 override void keyReleaseEvent(QKeyEvent e); 219 /+ #if QT_CONFIG(wheelevent) +/ 220 override void wheelEvent(QWheelEvent e); 221 /+ #endif 222 #ifndef QT_NO_CONTEXTMENU +/ 223 version(QT_NO_CONTEXTMENU){}else 224 { 225 override void contextMenuEvent(QContextMenuEvent e); 226 } 227 /+ #endif +/ // QT_NO_CONTEXTMENU 228 override void inputMethodEvent(QInputMethodEvent ); 229 /+ virtual +/ void initStyleOption(QStyleOptionComboBox* option) const; 230 231 232 protected: 233 this(ref QComboBoxPrivate , QWidget ); 234 235 private: 236 /+ Q_DECLARE_PRIVATE(QComboBox) +/ 237 /+ Q_DISABLE_COPY(QComboBox) +/ 238 /+ Q_PRIVATE_SLOT(d_func(), void _q_itemSelected(const QModelIndex &item)) 239 Q_PRIVATE_SLOT(d_func(), void _q_emitHighlighted(const QModelIndex &)) 240 Q_PRIVATE_SLOT(d_func(), void _q_emitCurrentIndexChanged(const QModelIndex &index)) 241 Q_PRIVATE_SLOT(d_func(), void _q_editingFinished()) 242 Q_PRIVATE_SLOT(d_func(), void _q_returnPressed()) 243 Q_PRIVATE_SLOT(d_func(), void _q_resetButton()) 244 Q_PRIVATE_SLOT(d_func(), void _q_dataChanged(const QModelIndex &, const QModelIndex &)) 245 Q_PRIVATE_SLOT(d_func(), void _q_updateIndexBeforeChange()) 246 Q_PRIVATE_SLOT(d_func(), void _q_rowsInserted(const QModelIndex & parent, int start, int end)) 247 Q_PRIVATE_SLOT(d_func(), void _q_rowsRemoved(const QModelIndex & parent, int start, int end)) 248 Q_PRIVATE_SLOT(d_func(), void _q_modelDestroyed()) 249 Q_PRIVATE_SLOT(d_func(), void _q_modelReset()) 250 #if QT_CONFIG(completer) 251 Q_PRIVATE_SLOT(d_func(), void _q_completerActivated(const QModelIndex &index)) 252 #endif +/ 253 mixin(CREATE_CONVENIENCE_WRAPPERS); 254 } 255