diff --git a/src/multizimbutton.cpp b/src/multizimbutton.cpp index c991866..e1824c9 100644 --- a/src/multizimbutton.cpp +++ b/src/multizimbutton.cpp @@ -13,7 +13,7 @@ MultiZimButton::MultiZimButton(QWidget *parent) : QToolButton(parent), mp_buttonList(new QListWidget), mp_radioButtonGroup(new QButtonGroup(this)), - mp_selectAllButton(new QCheckBox(gt("select-all"), this)) + mp_selectAllButton(new SelectAllButton(gt("select-all"), this)) { setMenu(new QMenu(this)); setPopupMode(QToolButton::InstantPopup); @@ -172,3 +172,13 @@ ZimItemWidget::ZimItemWidget(QString text, QIcon icon, QWidget *parent) : layout()->addWidget(textLabel); layout()->addWidget(radioBt); } + +void SelectAllButton::keyPressEvent(QKeyEvent *e) +{ + if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) + { + toggle(); + return; + } + QCheckBox::keyPressEvent(e); +} diff --git a/src/multizimbutton.h b/src/multizimbutton.h index 7444ba3..74284e2 100644 --- a/src/multizimbutton.h +++ b/src/multizimbutton.h @@ -2,13 +2,23 @@ #define MULTIZIMBUTTON_H #include +#include class QListWidget; class QButtonGroup; class QListWidgetItem; class QRadioButton; class QLabel; -class QCheckBox; + +class SelectAllButton : public QCheckBox { + Q_OBJECT + +public: + SelectAllButton(const QString &text, QWidget *parent = nullptr) : QCheckBox(text, parent) {} + +protected: + void keyPressEvent(QKeyEvent *e) override; +}; class ZimItemWidget : public QWidget { Q_OBJECT @@ -37,7 +47,7 @@ public slots: private: QListWidget* mp_buttonList; QButtonGroup* mp_radioButtonGroup; - QCheckBox* mp_selectAllButton; + SelectAllButton* mp_selectAllButton; ZimItemWidget* getZimWidget(int row) const; void setItemZimWidget(QListWidgetItem* item, const QString& title, const QIcon& icon);