diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp index ee58797d3c..96c3510529 100644 --- a/src/widgets/widgets/qtoolbutton.cpp +++ b/src/widgets/widgets/qtoolbutton.cpp @@ -961,12 +961,6 @@ void QToolButton::setDefaultAction(QAction *action) } #endif setCheckable(action->isCheckable()); - if (action->isCheckable()) { - connect(this, &QAbstractButton::toggled, this, [this](bool checked) { - if (defaultAction()) - defaultAction()->setChecked(checked); - }, Qt::UniqueConnection); - } setChecked(action->isChecked()); setEnabled(action->isEnabled()); if (action->d_func()->fontSet) @@ -985,7 +979,15 @@ QAction *QToolButton::defaultAction() const return d->defaultAction; } - +/*! + \reimp + */ +void QToolButton::checkStateSet() +{ + Q_D(QToolButton); + if (d->defaultAction && d->defaultAction->isCheckable()) + d->defaultAction->setChecked(isChecked()); +} /*! \reimp diff --git a/src/widgets/widgets/qtoolbutton.h b/src/widgets/widgets/qtoolbutton.h index 96702c145f..062eeea708 100644 --- a/src/widgets/widgets/qtoolbutton.h +++ b/src/widgets/widgets/qtoolbutton.h @@ -118,6 +118,7 @@ protected: void changeEvent(QEvent *) override; bool hitButton(const QPoint &pos) const override; + void checkStateSet() override; void nextCheckState() override; virtual void initStyleOption(QStyleOptionToolButton *option) const;