Qt - 如何在保持检查状态的同时禁用QCheckBox?

thn*_*tls 3 c++ checkbox qt signals dialog

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

connect(ui->A, SIGNAL(toggled(bool)),
        this, SLOT(setBCheckable(bool)));
Run Code Online (Sandbox Code Playgroud)

...然后我有这个功能:

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

但是,当我这样做的时候,我注意到当我点击A时,B将显示它保持状态,但是当我将鼠标移到它上面时(无论A是否仍然被点击,只是下次我鼠标悬停时)检查A)后,它刷新B不被点击.我不能这样做,因为我需要函数来保留B的值,即使B不能被改变.有没有办法做到这一点?总而言之,即使按钮无法切换,我也需要一种方法让QCheckBox保持其状态.提前致谢!

Ang*_*uck 9

使用setEnabled(false)这将禁用的功能,但应保持其状态

  • 没问题,我记得有一段时间没找到这个:) (3认同)