MultiZim Select-All Button Key Press Compatible

QCheckbox does not provide support out of the box for key press checking.
This commit is contained in:
ShaopengLin 2024-11-03 11:58:19 -05:00
parent fdfd0efca0
commit cc81532d76
2 changed files with 23 additions and 3 deletions

View File

@ -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);
}

View File

@ -2,13 +2,23 @@
#define MULTIZIMBUTTON_H
#include <QToolButton>
#include <QCheckBox>
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);