Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-05 08:49:13

0001 // Copyright (C) 2020 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 QCOMBOBOX_H
0006 #define QCOMBOBOX_H
0007 
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtWidgets/qwidget.h>
0010 #include <QtWidgets/qabstractitemdelegate.h>
0011 #include <QtCore/qabstractitemmodel.h>
0012 #include <QtCore/qvariant.h>
0013 #include <QtGui/qvalidator.h>
0014 
0015 QT_REQUIRE_CONFIG(combobox);
0016 
0017 QT_BEGIN_NAMESPACE
0018 
0019 class QAbstractItemView;
0020 class QLineEdit;
0021 class QComboBoxPrivate;
0022 class QCompleter;
0023 
0024 class Q_WIDGETS_EXPORT QComboBox : public QWidget
0025 {
0026     Q_OBJECT
0027 
0028     Q_PROPERTY(bool editable READ isEditable WRITE setEditable)
0029     Q_PROPERTY(int count READ count)
0030     Q_PROPERTY(QString currentText READ currentText WRITE setCurrentText NOTIFY currentTextChanged
0031                USER true)
0032     Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged)
0033     Q_PROPERTY(QVariant currentData READ currentData)
0034     Q_PROPERTY(int maxVisibleItems READ maxVisibleItems WRITE setMaxVisibleItems)
0035     Q_PROPERTY(int maxCount READ maxCount WRITE setMaxCount)
0036     Q_PROPERTY(InsertPolicy insertPolicy READ insertPolicy WRITE setInsertPolicy)
0037     Q_PROPERTY(SizeAdjustPolicy sizeAdjustPolicy READ sizeAdjustPolicy WRITE setSizeAdjustPolicy)
0038     Q_PROPERTY(int minimumContentsLength READ minimumContentsLength WRITE setMinimumContentsLength)
0039     Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
0040     Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText)
0041     Q_PROPERTY(bool duplicatesEnabled READ duplicatesEnabled WRITE setDuplicatesEnabled)
0042     Q_PROPERTY(bool frame READ hasFrame WRITE setFrame)
0043     Q_PROPERTY(int modelColumn READ modelColumn WRITE setModelColumn)
0044     Q_PROPERTY(LabelDrawingMode labelDrawingMode READ labelDrawingMode WRITE setLabelDrawingMode)
0045 
0046 public:
0047     explicit QComboBox(QWidget *parent = nullptr);
0048     ~QComboBox();
0049 
0050     int maxVisibleItems() const;
0051     void setMaxVisibleItems(int maxItems);
0052 
0053     int count() const;
0054     void setMaxCount(int max);
0055     int maxCount() const;
0056 
0057     bool duplicatesEnabled() const;
0058     void setDuplicatesEnabled(bool enable);
0059 
0060     void setFrame(bool);
0061     bool hasFrame() const;
0062 
0063     inline int findText(const QString &text,
0064                         Qt::MatchFlags flags = static_cast<Qt::MatchFlags>(Qt::MatchExactly|Qt::MatchCaseSensitive)) const
0065         { return findData(text, Qt::DisplayRole, flags); }
0066     int findData(const QVariant &data, int role = Qt::UserRole,
0067                  Qt::MatchFlags flags = static_cast<Qt::MatchFlags>(Qt::MatchExactly|Qt::MatchCaseSensitive)) const;
0068 
0069     enum InsertPolicy {
0070         NoInsert,
0071         InsertAtTop,
0072         InsertAtCurrent,
0073         InsertAtBottom,
0074         InsertAfterCurrent,
0075         InsertBeforeCurrent,
0076         InsertAlphabetically
0077     };
0078     Q_ENUM(InsertPolicy)
0079 
0080     InsertPolicy insertPolicy() const;
0081     void setInsertPolicy(InsertPolicy policy);
0082 
0083     enum SizeAdjustPolicy {
0084         AdjustToContents,
0085         AdjustToContentsOnFirstShow,
0086         AdjustToMinimumContentsLengthWithIcon
0087     };
0088     Q_ENUM(SizeAdjustPolicy)
0089 
0090     enum class LabelDrawingMode {
0091         UseStyle,
0092         UseDelegate,
0093     };
0094     Q_ENUM(LabelDrawingMode)
0095 
0096     SizeAdjustPolicy sizeAdjustPolicy() const;
0097     void setSizeAdjustPolicy(SizeAdjustPolicy policy);
0098     int minimumContentsLength() const;
0099     void setMinimumContentsLength(int characters);
0100     QSize iconSize() const;
0101     void setIconSize(const QSize &size);
0102 
0103     void setPlaceholderText(const QString &placeholderText);
0104     QString placeholderText() const;
0105 
0106     bool isEditable() const;
0107     void setEditable(bool editable);
0108     void setLineEdit(QLineEdit *edit);
0109     QLineEdit *lineEdit() const;
0110 #ifndef QT_NO_VALIDATOR
0111     void setValidator(const QValidator *v);
0112     const QValidator *validator() const;
0113 #endif
0114 
0115 #if QT_CONFIG(completer)
0116     void setCompleter(QCompleter *c);
0117     QCompleter *completer() const;
0118 #endif
0119 
0120     QAbstractItemDelegate *itemDelegate() const;
0121     void setItemDelegate(QAbstractItemDelegate *delegate);
0122 
0123     QAbstractItemModel *model() const;
0124     virtual void setModel(QAbstractItemModel *model);
0125 
0126     QModelIndex rootModelIndex() const;
0127     void setRootModelIndex(const QModelIndex &index);
0128 
0129     int modelColumn() const;
0130     void setModelColumn(int visibleColumn);
0131 
0132     LabelDrawingMode labelDrawingMode() const;
0133     void setLabelDrawingMode(LabelDrawingMode labelDrawing);
0134 
0135     int currentIndex() const;
0136     QString currentText() const;
0137     QVariant currentData(int role = Qt::UserRole) const;
0138 
0139     QString itemText(int index) const;
0140     QIcon itemIcon(int index) const;
0141     QVariant itemData(int index, int role = Qt::UserRole) const;
0142 
0143     inline void addItem(const QString &text, const QVariant &userData = QVariant());
0144     inline void addItem(const QIcon &icon, const QString &text,
0145                         const QVariant &userData = QVariant());
0146     inline void addItems(const QStringList &texts)
0147         { insertItems(count(), texts); }
0148 
0149     inline void insertItem(int index, const QString &text, const QVariant &userData = QVariant());
0150     void insertItem(int index, const QIcon &icon, const QString &text,
0151                     const QVariant &userData = QVariant());
0152     void insertItems(int index, const QStringList &texts);
0153     void insertSeparator(int index);
0154 
0155     void removeItem(int index);
0156 
0157     void setItemText(int index, const QString &text);
0158     void setItemIcon(int index, const QIcon &icon);
0159     void setItemData(int index, const QVariant &value, int role = Qt::UserRole);
0160 
0161     QAbstractItemView *view() const;
0162     void setView(QAbstractItemView *itemView);
0163 
0164     QSize sizeHint() const override;
0165     QSize minimumSizeHint() const override;
0166 
0167     virtual void showPopup();
0168     virtual void hidePopup();
0169 
0170     bool event(QEvent *event) override;
0171     QVariant inputMethodQuery(Qt::InputMethodQuery) const override;
0172     Q_INVOKABLE QVariant inputMethodQuery(Qt::InputMethodQuery query, const QVariant &argument) const;
0173 
0174 public Q_SLOTS:
0175     void clear();
0176     void clearEditText();
0177     void setEditText(const QString &text);
0178     void setCurrentIndex(int index);
0179     void setCurrentText(const QString &text);
0180 
0181 Q_SIGNALS:
0182     void editTextChanged(const QString &);
0183     void activated(int index);
0184     void textActivated(const QString &);
0185     void highlighted(int index);
0186     void textHighlighted(const QString &);
0187     void currentIndexChanged(int index);
0188     void currentTextChanged(const QString &);
0189 
0190 protected:
0191     void focusInEvent(QFocusEvent *e) override;
0192     void focusOutEvent(QFocusEvent *e) override;
0193     void changeEvent(QEvent *e) override;
0194     void resizeEvent(QResizeEvent *e) override;
0195     void paintEvent(QPaintEvent *e) override;
0196     void showEvent(QShowEvent *e) override;
0197     void hideEvent(QHideEvent *e) override;
0198     void mousePressEvent(QMouseEvent *e) override;
0199     void mouseReleaseEvent(QMouseEvent *e) override;
0200     void keyPressEvent(QKeyEvent *e) override;
0201     void keyReleaseEvent(QKeyEvent *e) override;
0202 #if QT_CONFIG(wheelevent)
0203     void wheelEvent(QWheelEvent *e) override;
0204 #endif
0205 #ifndef QT_NO_CONTEXTMENU
0206     void contextMenuEvent(QContextMenuEvent *e) override;
0207 #endif // QT_NO_CONTEXTMENU
0208     void inputMethodEvent(QInputMethodEvent *) override;
0209     virtual void initStyleOption(QStyleOptionComboBox *option) const;
0210 
0211 
0212 protected:
0213     QComboBox(QComboBoxPrivate &, QWidget *);
0214 
0215 private:
0216     Q_DECLARE_PRIVATE(QComboBox)
0217     Q_DISABLE_COPY(QComboBox)
0218 };
0219 
0220 inline void QComboBox::addItem(const QString &atext, const QVariant &auserData)
0221 { insertItem(count(), atext, auserData); }
0222 inline void QComboBox::addItem(const QIcon &aicon, const QString &atext,
0223                                const QVariant &auserData)
0224 { insertItem(count(), aicon, atext, auserData); }
0225 
0226 inline void QComboBox::insertItem(int aindex, const QString &atext,
0227                                   const QVariant &auserData)
0228 { insertItem(aindex, QIcon(), atext, auserData); }
0229 
0230 QT_END_NAMESPACE
0231 
0232 #endif // QCOMBOBOX_H