qt checkbox 怎样互斥
时间: 2023-08-28 14:06:25 浏览: 359
Qt中的checkbox可以通过设置它们的group属性来实现互斥。将同一组的所有checkbox的group属性设置为同一个值,然后在处理槽函数中使用sender()函数来检查哪个checkbox被选中,可以保证同一组中最多只有一个checkbox被选中。
例如,假设有三个checkbox,它们的group属性分别为1、1、2,那么在处理槽函数时,可以先判断sender()函数返回的checkbox的group属性是1还是2,如果是1,则可以设置其他group为1的checkbox为未选中状态。示例代码如下:
```cpp
void MainWindow::onCheckBoxClicked()
{
QCheckBox *checkBox = qobject_cast<QCheckBox*>(sender());
if(checkBox->isChecked())
{
int group = checkBox->property("group").toInt();
QList<QCheckBox*> checkBoxList = ui->groupBox->findChildren<QCheckBox*>();
foreach(QCheckBox *otherCheckBox, checkBoxList)
{
if(otherCheckBox->property("group").toInt() == group && otherCheckBox != checkBox)
{
otherCheckBox->setChecked(false);
}
}
}
}
```
在该示例中,我们假设所有的checkbox都被放在一个groupBox中,然后在groupBox的findChildren<QCheckBox*>函数中查找所有的checkbox,然后遍历所有的checkbox,如果它们的group属性与当前checkbox的group属性相同,但是不是同一个checkbox,则将它们设置为未选中状态。这样就实现了checkbox的互斥效果。
阅读全文