要实现互斥选择,即只能选择一个复选框,您可以使用 QButtonGroup
类来管理这些复选框,并为每个复选框设置一个唯一的 ID。下面是一个示例代码:
#include <QCheckBox>
#include <QButtonGroup>
// 创建复选框
QCheckBox *checkBoxA = new QCheckBox("A", this);
QCheckBox *checkBoxB = new QCheckBox("B", this);
QCheckBox *checkBoxC = new QCheckBox("C", this);
QCheckBox *checkBoxD = new QCheckBox("D", this);
// 创建按钮组并添加复选框
QButtonGroup *buttonGroup = new QButtonGroup(this);
buttonGroup->addButton(checkBoxA, 0); // 设置ID为0
buttonGroup->addButton(checkBoxB, 1); // 设置ID为1
buttonGroup->addButton(checkBoxC, 2); // 设置ID为2
buttonGroup->addButton(checkBoxD, 3); // 设置ID为3
// 监听按钮组的选中信号
connect(buttonGroup, SIGNAL(buttonClicked(int)), this, SLOT(handleCheckboxSelection(int)));
// 处理选择事件的槽函数
void handleCheckboxSelection(int id)
{
// 遍历按钮组中的所有按钮,根据ID设置勾选状态
foreach(QAbstractButton* button, buttonGroup->buttons()) {
if (button->isChecked() && button->objectName() != QString::number(id)) {
button->setChecked(false);
}
}
}
在上述代码中,我们创建了四个复选框(A、B、C、D),然后将它们添加到一个按钮组中。每个复选框都有一个唯一的ID。当选择了其中一个复选框时,我们通过槽函数 handleCheckboxSelection()
进行处理,遍历按钮组中的所有按钮,并根据其ID设置勾选状态。如果某个按钮被选中且其ID与当前选择的按钮ID不匹配,则将其勾选状态设为false,实现互斥选择的效果。
内容由零声教学AI助手提供,问题来源于学员提问