Qt - How to disable QCheckBox while retaining chec

2019-05-10 19:04发布

问题:

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!

回答1:

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