Qt - How to disable QCheckBox while retaining checked state?

11,376

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

Share:
11,376
thnkwthprtls
Author by

thnkwthprtls

C/C++ (specialty in Qt environment) Python Bash HTML/CSS Java JavaScript Ruby SQL

Updated on June 15, 2022

Comments

  • thnkwthprtls
    thnkwthprtls almost 2 years

    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
    thnkwthprtls almost 10 years
    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)
  • AngryDuck
    AngryDuck almost 10 years
    no problem i remember failing to find this for a while too :)