Browse Source

ctkCheckablePushButton emits toggled signal when set uncheckable

QAbtractButton::setCheckable doesn't emit signal when it is set to
uncheckable and if it was checked.
Julien Finet 13 years ago
parent
commit
a2274be97f
1 changed files with 9 additions and 1 deletions
  1. 9 1
      Libs/Widgets/ctkCheckablePushButton.cpp

+ 9 - 1
Libs/Widgets/ctkCheckablePushButton.cpp

@@ -231,13 +231,21 @@ void ctkCheckablePushButton::setCheckState(Qt::CheckState checkState)
     return;
     }
   d->CheckState = checkState;
+  bool emitToggled = false;
   if (d->CheckBoxFlags & Qt::ItemIsEnabled)
     {
+    bool wasChecked = this->isChecked();
+    // QCheckBox::setCheckable() doesn't emit toggled signal
     this->setCheckable(checkState == Qt::Checked);
+    emitToggled = (wasChecked != this->isChecked());
+    }
+  if (emitToggled)
+    {
+    emit toggled(this->isChecked());
     }
-  this->update();
   emit checkStateChanged(d->CheckState);
   emit checkBoxToggled(d->CheckState == Qt::Checked);
+  this->update();
 }
 
 //-----------------------------------------------------------------------------