diff options
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/widgets/qlineedit.cpp | 7 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit.h | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit_p.cpp | 12 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit_p.h | 1 |
4 files changed, 16 insertions, 5 deletions
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 07985cf966..9f1f00ced7 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -1691,8 +1691,11 @@ void QLineEdit::mouseDoubleClickEvent(QMouseEvent* e) /*! \fn void QLineEdit::editingFinished() - This signal is emitted when the Return or Enter key is pressed or - the line edit loses focus. Note that if there is a validator() or + This signal is emitted when the Return or Enter key is pressed, or + if the line edit loses focus and its contents have changed since the + last time this signal was emitted. + + Note that if there is a validator() or inputMask() set on the line edit and enter/return is pressed, the editingFinished() signal will only be emitted if the input follows the inputMask() and the validator() returns QValidator::Acceptable. diff --git a/src/widgets/widgets/qlineedit.h b/src/widgets/widgets/qlineedit.h index f09d62ec78..b4f6641b86 100644 --- a/src/widgets/widgets/qlineedit.h +++ b/src/widgets/widgets/qlineedit.h @@ -263,6 +263,7 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_updateNeeded(const QRect &)) Q_PRIVATE_SLOT(d_func(), void _q_textChanged(const QString &)) Q_PRIVATE_SLOT(d_func(), void _q_clearButtonClicked()) + Q_PRIVATE_SLOT(d_func(), void _q_controlEditingFinished()) }; QT_END_NAMESPACE diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index 9fe5b5af3f..1839941036 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -193,10 +193,8 @@ void QLineEditPrivate::init(const QString& txt) q, SLOT(_q_cursorPositionChanged(int,int))); QObject::connect(control, SIGNAL(selectionChanged()), q, SLOT(_q_selectionChanged())); - QObject::connect(control, SIGNAL(accepted()), - q, SIGNAL(returnPressed())); QObject::connect(control, SIGNAL(editingFinished()), - q, SIGNAL(editingFinished())); + q, SLOT(_q_controlEditingFinished())); #ifdef QT_KEYPAD_NAVIGATION QObject::connect(control, SIGNAL(editFocusChange(bool)), q, SLOT(_q_editFocusChange(bool))); @@ -485,6 +483,14 @@ void QLineEditPrivate::_q_clearButtonClicked() } } +void QLineEditPrivate::_q_controlEditingFinished() +{ + Q_Q(QLineEdit); + edited = false; + emit q->returnPressed(); + emit q->editingFinished(); +} + QLineEditPrivate::SideWidgetParameters QLineEditPrivate::sideWidgetParameters() const { Q_Q(const QLineEdit); diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h index 049f7a3bdf..936cf2d088 100644 --- a/src/widgets/widgets/qlineedit_p.h +++ b/src/widgets/widgets/qlineedit_p.h @@ -233,6 +233,7 @@ public: #endif void _q_textChanged(const QString &); void _q_clearButtonClicked(); + void _q_controlEditingFinished(); QMargins textMargins; // use effectiveTextMargins() in case of icon. |