Qt -如何禁用QCheckBox,同时保留检查状态

Qt - How to disable QCheckBox while retaining checked state?

本文关键字:保留 检查 状态 何禁用 QCheckBox Qt      更新时间:2023-10-16

我有一个带有两个复选框的对话框,我们称它们为a和B。当a未被选中时,B应该能够根据用户的需要进行切换。当A被选中时,B应该不能被切换。现在,我在对话框的构造函数中有以下内容:

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

…然后这个函数是这样的:

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

然而,当我这样做的时候,我注意到当我点击A时,B会保持它的状态,但是当我将鼠标移动到它上面时(无论A是否仍然被点击,只是下次我在检查A后鼠标经过),它刷新B为未被点击。我不能让它这样做,因为我需要函数保留B的值,即使B不能改变。有办法做到这一点吗?总而言之,我需要一种方法使QCheckBox即使在无法切换按钮时也能保持已选中状态。提前感谢!

使用setEnabled(false)函数,这将禁用,但应保持其状态