diff options
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r-- | src/widgets/widgets/qcombobox.cpp | 20 | ||||
-rw-r--r-- | src/widgets/widgets/qcombobox.h | 3 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index 27fc3f9015..ef908d62c6 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -822,6 +822,14 @@ QStyleOptionComboBox QComboBoxPrivateContainer::comboStyleOption() const */ /*! + \fn void QComboBox::currentTextChanged(const QString &text) + \since 5.0 + + This signal is sent whenever currentText changes. The new value + is passed as \a text. +*/ + +/*! Constructs a combobox with the given \a parent, using the default model QStandardItemModel. */ @@ -980,9 +988,12 @@ void QComboBoxPrivate::_q_dataChanged(const QModelIndex &topLeft, const QModelIn } if (currentIndex.row() >= topLeft.row() && currentIndex.row() <= bottomRight.row()) { + const QString text = q->itemText(currentIndex.row()); if (lineEdit) { - lineEdit->setText(q->itemText(currentIndex.row())); + lineEdit->setText(text); updateLineEditGeometry(); + } else { + emit q->currentTextChanged(text); } q->update(); } @@ -1242,7 +1253,11 @@ void QComboBoxPrivate::_q_emitCurrentIndexChanged(const QModelIndex &index) { Q_Q(QComboBox); emit q->currentIndexChanged(index.row()); - emit q->currentIndexChanged(itemText(index)); + const QString text = itemText(index); + emit q->currentIndexChanged(text); + // signal lineEdit.textChanged already connected to signal currentTextChanged, so don't emit double here + if (!lineEdit) + emit q->currentTextChanged(text); #ifndef QT_NO_ACCESSIBILITY QAccessibleEvent event(q, QAccessible::NameChanged); QAccessible::updateAccessibility(&event); @@ -1714,6 +1729,7 @@ void QComboBox::setLineEdit(QLineEdit *edit) connect(d->lineEdit, SIGNAL(returnPressed()), this, SLOT(_q_returnPressed())); connect(d->lineEdit, SIGNAL(editingFinished()), this, SLOT(_q_editingFinished())); connect(d->lineEdit, SIGNAL(textChanged(QString)), this, SIGNAL(editTextChanged(QString))); + connect(d->lineEdit, SIGNAL(textChanged(QString)), this, SIGNAL(currentTextChanged(QString))); d->lineEdit->setFrame(false); d->lineEdit->setContextMenuPolicy(Qt::NoContextMenu); d->lineEdit->setFocusProxy(this); diff --git a/src/widgets/widgets/qcombobox.h b/src/widgets/widgets/qcombobox.h index 1d0e892fd8..bce6c98f2c 100644 --- a/src/widgets/widgets/qcombobox.h +++ b/src/widgets/widgets/qcombobox.h @@ -66,7 +66,7 @@ class Q_WIDGETS_EXPORT QComboBox : public QWidget Q_ENUMS(SizeAdjustPolicy) Q_PROPERTY(bool editable READ isEditable WRITE setEditable) Q_PROPERTY(int count READ count) - Q_PROPERTY(QString currentText READ currentText WRITE setCurrentText USER true) + Q_PROPERTY(QString currentText READ currentText WRITE setCurrentText NOTIFY currentTextChanged USER true) Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) Q_PROPERTY(int maxVisibleItems READ maxVisibleItems WRITE setMaxVisibleItems) Q_PROPERTY(int maxCount READ maxCount WRITE setMaxCount) @@ -221,6 +221,7 @@ Q_SIGNALS: void highlighted(const QString &); void currentIndexChanged(int index); void currentIndexChanged(const QString &); + void currentTextChanged(const QString &); protected: void focusInEvent(QFocusEvent *e); |