Вероятно, есть более элегантный способ сделать это, но я бы предложил просто использовать сигналы.
Где-то, вероятно, конструктор, вы бы подключили сигнал
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 );
}
. Это станет непрактичным, если у вас много флажков, если (если не выбраны) вы не хотите задавать c набор флажков. , в этом случае вышеупомянутый будет обработчик для всех сигналов флажка.