Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-13 09:08:06

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