From 01dc1a94907e4011c357d2078a764fa353e73f53 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 19 May 2022 17:51:51 +0200 Subject: [PATCH] ButtonSwitch: use stylesheet instead of fiddling with the color palette. Fixes some inital color state issues --- sdrgui/gui/buttonswitch.cpp | 43 +++++++------------------------------ sdrgui/gui/buttonswitch.h | 6 ------ 2 files changed, 8 insertions(+), 41 deletions(-) diff --git a/sdrgui/gui/buttonswitch.cpp b/sdrgui/gui/buttonswitch.cpp index dfbcaa16e..da84438eb 100644 --- a/sdrgui/gui/buttonswitch.cpp +++ b/sdrgui/gui/buttonswitch.cpp @@ -5,51 +5,24 @@ ButtonSwitch::ButtonSwitch(QWidget* parent) : QToolButton(parent) { setCheckable(true); - m_originalPalette = palette(); - connect(this, SIGNAL(toggled(bool)), this, SLOT(onToggled(bool))); -} - -void ButtonSwitch::onToggled(bool checked) -{ - blockSignals(true); - setChecked(checked); - blockSignals(false); - - if (checked) - { - QPalette p = m_originalPalette; - p.setColor(QPalette::Button, QColor(0x80, 0x46, 0x00)); - setPalette(p); - } - else - { - setPalette(m_originalPalette); - } + setStyleSheet(QString("QToolButton{ background-color: %1; } QToolButton:checked{ background-color: %2; }") + .arg(palette().button().color().name()) + .arg(palette().highlight().color().darker(150).name())); } void ButtonSwitch::doToggle(bool checked) { - onToggled(checked); + setChecked(checked); } void ButtonSwitch::setColor(QColor color) { - QPalette p = m_originalPalette; - p.setColor(QPalette::Button, color); - setPalette(p); + setStyleSheet(QString("QToolButton{ background-color: %1; }").arg(color.name())); } void ButtonSwitch::resetColor() { - if (isChecked()) - { - QPalette p = m_originalPalette; - p.setColor(QPalette::Button, QColor(0x80, 0x46, 0x00)); - setPalette(p); - } - else - { - setPalette(m_originalPalette); - } - + setStyleSheet(QString("QToolButton{ background-color: %1; } QToolButton:checked{ background-color: %2; }") + .arg(palette().button().color().name()) + .arg(palette().highlight().color().darker(150).name())); } diff --git a/sdrgui/gui/buttonswitch.h b/sdrgui/gui/buttonswitch.h index 14ca748af..ee038b8a6 100644 --- a/sdrgui/gui/buttonswitch.h +++ b/sdrgui/gui/buttonswitch.h @@ -13,12 +13,6 @@ public: void doToggle(bool checked); void setColor(QColor color); void resetColor(); - -private slots: - void onToggled(bool checked); - -private: - QPalette m_originalPalette; }; #endif // INCLUDE_BUTTONSWITCH_H