Qt之QCheckBox限定选择个数问题
1.正常情况下QCheckBox对选择个数是不限制的
2.设置QCheckBox为单项选择的情况
解决方法:见代码(本例为5个CheckBox选一个)
void ButtonGroup::initCheckBoxGroup()
{
QButtonGroup* pButtonGroup = new QButtonGroup(this);
pButtonGroup->addButton(ui.checkBox,1);
pButtonGroup->addButton(ui.checkBox_2,2);
pButtonGroup->addButton(ui.checkBox_3,3);
pButtonGroup->addButton(ui.checkBox_4,4);
pButtonGroup->addButton(ui.checkBox_5,5);
}
3.设置QCheckBox为多项选择但不能全部选择的情况
解决方法:见代码
//先给每个CheckBox与槽函数建立连接
connect(ui->checkbox1,SIGNAL(clicked()),this,SLOT(getcheckbox()));
connect(ui->checkbox2,SIGNAL(clicked()),this,SLOT(getcheckbox()));
connect(ui->checkbox3,SIGNAL(clicked()),this,SLOT(getcheckbox()));
connect(ui->checkbox4,SIGNAL(clicked()),this,SLOT(getcheckbox()));
connect(ui->checkbox5,SIGNAL(clicked()),this,SLOT(getcheckbox()));
connect(ui->checkbox6,SIGNAL(clicked()),this,SLOT(getcheckbox()));
connect(ui->checkbox7,SIGNAL(clicked()),this,SLOT(getcheckbox()));
connect(ui->checkbox8,SIGNAL(clicked()),this,SLOT(getcheckbox()));
connect(ui->checkbox9,SIGNAL(clicked()),this,SLOT(getcheckbox()));
connect(ui->checkbox10,SIGNAL(clicked()),this,SLOT(getcheckbox()));
//槽函数实现
void CheckBox::getcheckbox()
{
QObject *obj = QObject::sender();
QCheckBox *chb = qobject_cast<QCheckBox *>(obj);
if(chb->isChecked()){
sum++;
} else {
sum--;
}
if(sum == 6)
{
chb->toggle();
sum--;
//可以加提示(超过5个了)
}
如果还有什么好的方法,欢迎补充~