首页 > 解决方案 > Qt 互斥复选框

问题描述

我想在 Qt 中创建一组互斥复选框(没有 Qt Designer 或任何花哨的东西)。使用三个复选框,我可以在操作函数中执行以下操作:

void mainWindow::checkbox1action() {
  // mutual exclusivity
  checkbox2->setChecked(!checkbox1->isChecked());
  checkbox3->setChecked(!checkbox1->isChecked());

  // action for checkbox 1
  ...
}

同样适用于所有其他复选框。但是,如果有 15 个颜色复选框,则此操作变得非常重复。对于许多复选框,还有其他更好的方法吗?

标签: c++qtcheckboxmutual-exclusion

解决方案


您可以将复选框添加到QButtonGroup并将其设置为独占。

QButtonGroup *group = new QButtonGroup(this);
group->setExclusive(true);
group->addButton(checkbox1);
group->addButton(checkbox2);

还有QRadioButton,它在同一个小部件中自动排他。


推荐阅读