Qcheckbox 最小一个选项总是在 QT -c++ 中选中

Qcheckbox minimum one option is always checked in QT -c++

我有一个带有 qcheckboxes 的 QT 应用程序。我想实现一个复选框总是被选中,我可以尽可能多地检查,但总是必须选中一个。我该怎么做?

可能有更优雅的方法来做到这一点,但我建议只使用信号。

在某个地方,可能是构造函数,你会连接信号

connect( chkOne, &QCheckBox::toggled, this, &Test::onCheckboxOne );

然后,在您将其连接到的函数中,只需检查是否检查了其他任何内容。为此,我使用了一个名为 total_checked.

的变量
void Test::onCheckboxOne( bool checked ) {
    disconnect( chkOne, &QCheckBox::toggled, this, &Test::onCheckboxOne );
    if ( !checked ) {
        if ( total_checked == 1 )
            this->chkOne->setCheckState( Qt::Checked );
        else
            --total_checked;
    } else {
        ++total_checked;
    }
    connect( chkOne, &QCheckBox::toggled, this, &Test::onCheckboxOne );
}

如果你有很多复选框,这将变得不切实际,除非(一旦未选中),你想要一个特定的复选框集,在这种情况下,上面的内容将是所有复选框信号的处理程序。