9

I have a dialog with two checkboxes, let's call them A and B. When A is NOT checked, B should be able to be toggled as the user desires. When A IS checked, B should not be able to be toggled. Right now I have the following in my constructor function for the dialog:

connect(ui->A, SIGNAL(toggled(bool)),
        this, SLOT(setBCheckable(bool)));

...and then I have that function as this:

void MyClass::setBCheckable(bool AChecked)
{
    if(AChecked)
    {
        ui->B->setCheckable(false);
    }
    else
    {
        ui->B->setCheckable(true);
    }
}

However, when I do this, I've noticed that when I click A, B will APPEAR to retain it's status, but then when I move the mouse over it (whether A is still clicked or not, just the next time I mouse over after checking A), it refreshes B to NOT being clicked. I cannot have it doing this, since I need the function to retain the value for B even when B cannot be changed. Is there a way to do this? To summarize, I need a way for a QCheckBox to keep it's checked status even when the button cannot be toggled. Thanks in advance!

thnkwthprtls
  • 3,287
  • 11
  • 42
  • 63

1 Answers1

21

use the function setEnabled(false) this will disable but should keep its state

BenMorel
  • 34,448
  • 50
  • 182
  • 322
AngryDuck
  • 4,358
  • 13
  • 57
  • 91
  • 1
    wow, I feel dumb now, I don't know how I missed that function in the docs :/ haha. Thanks for your help! (I'll mark the answer as accepted in a few minutes once the site lets me) – thnkwthprtls Jun 03 '14 at 13:22
  • 3
    no problem i remember failing to find this for a while too :) – AngryDuck Jun 03 '14 at 13:36