diff options
-rw-r--r-- | src/widgets/widgets/qkeysequenceedit.cpp | 34 | ||||
-rw-r--r-- | src/widgets/widgets/qkeysequenceedit.h | 4 |
2 files changed, 36 insertions, 2 deletions
diff --git a/src/widgets/widgets/qkeysequenceedit.cpp b/src/widgets/widgets/qkeysequenceedit.cpp index 97ee915037..674044e030 100644 --- a/src/widgets/widgets/qkeysequenceedit.cpp +++ b/src/widgets/widgets/qkeysequenceedit.cpp @@ -55,6 +55,13 @@ void QKeySequenceEditPrivate::init() lineEdit = new QLineEdit(q); lineEdit->setObjectName(QStringLiteral("qt_keysequenceedit_lineedit")); + lineEdit->setClearButtonEnabled(false); + q->connect(lineEdit, &QLineEdit::textChanged, [q](const QString& text) { + // Clear the shortcut if the user clicked on the clear icon + if (text.isEmpty()) + q->clear(); + }); + keyNum = 0; prevKey = -1; releaseTimer = 0; @@ -73,8 +80,6 @@ void QKeySequenceEditPrivate::init() q->setFocusPolicy(Qt::StrongFocus); q->setAttribute(Qt::WA_MacShowFocusRect, true); q->setAttribute(Qt::WA_InputMethodEnabled, false); - - // TODO: add clear button } int QKeySequenceEditPrivate::translateModifiers(Qt::KeyboardModifiers state, const QString &text) @@ -175,6 +180,31 @@ QKeySequence QKeySequenceEdit::keySequence() const return d->keySequence; } +/*! + \property QKeySequenceEdit::clearButtonEnabled + \brief Whether the key sequence edit displays a clear button when it is not + empty. + + If enabled, the key sequence edit displays a trailing \e clear button when + it contains some text, otherwise the line edit does not show a clear button + (the default). + + \since 6.4 +*/ +void QKeySequenceEdit::setClearButtonEnabled(bool enable) +{ + Q_D(QKeySequenceEdit); + + d->lineEdit->setClearButtonEnabled(enable); +} + +bool QKeySequenceEdit::isClearButtonEnabled() const +{ + Q_D(const QKeySequenceEdit); + + return d->lineEdit->isClearButtonEnabled(); +} + void QKeySequenceEdit::setKeySequence(const QKeySequence &keySequence) { Q_D(QKeySequenceEdit); diff --git a/src/widgets/widgets/qkeysequenceedit.h b/src/widgets/widgets/qkeysequenceedit.h index 999b400963..f0dea69ae3 100644 --- a/src/widgets/widgets/qkeysequenceedit.h +++ b/src/widgets/widgets/qkeysequenceedit.h @@ -54,6 +54,7 @@ class Q_WIDGETS_EXPORT QKeySequenceEdit : public QWidget Q_OBJECT Q_PROPERTY(QKeySequence keySequence READ keySequence WRITE setKeySequence NOTIFY keySequenceChanged USER true) + Q_PROPERTY(bool clearButtonEnabled READ isClearButtonEnabled WRITE setClearButtonEnabled) public: explicit QKeySequenceEdit(QWidget *parent = nullptr); @@ -62,6 +63,9 @@ public: QKeySequence keySequence() const; + void setClearButtonEnabled(bool enable); + bool isClearButtonEnabled() const; + public Q_SLOTS: void setKeySequence(const QKeySequence &keySequence); void clear(); |