QT 单选框 复选框

平时写程序时也没有注意到这么多东西,只知道实现功能即可,有时候写的代码又冗余又垃圾,以致于后期的维护以及再续开发时遇到各种各样的问题,实现起来需要修改很多地方,比如这个单选框与复选框的问题,以前我做的都是用chechbox来实现,根据不同的clicked事件来限制选择,那样做又麻烦又不容易后期的维护。

在Qt GUI中,单选框类是QRadioButton,复选框类是QCheckBox。它们都是QAbstractButton的派生类。
QCheckBox一般都很好用,这个用起来也很顺手, QRadioButton其实作为单选框来说是最好的选择。

QRadioButton首先要做一个 QButtonGroup 来将  QRadioButton添加进去,

QRadioButton * NTPTime = new QRadioButton(QString::fromUtf8("NTP server"));//NTP服务
QRadioButton * computerTime = new QRadioButton(QString::fromUtf8("computer time"));//电脑时间
QRadioButton * setTime = new QRadioButton(QString::fromUtf8("manually"));//手动


buttonGroup  = new QButtonGroup();

buttonGroup->addButton(NTPTime,0);
buttonGroup->addButton(computerTime,1);
buttonGroup->addButton(setTime,2);

把想要的按键与它所对应的ID号对应起来了,每一次点击按键时QButtonGroup都会信号buttonClicked (int 
ID)发射,通过判断ID的槽与其连接,就可以实现按键的判断了。

connect(buttonGroup, SIGNAL(buttonClicked(int)), this, SLOT(buttonGroupChanged(int)));


 
  
void TimeSetting::buttonGroupChanged(int id)
{
    switch(id)
    {
    case 0:
        NTPServerAddr->setEnabled(true);
        NTPPort->setEnabled(true);
        TimingInterval->setEnabled(true);
        setTimeEdit->setEnabled(false);
        break;
    case 1:
        NTPServerAddr->setEnabled(false);
        NTPPort->setEnabled(false);
        TimingInterval->setEnabled(false);
        setTimeEdit->setEnabled(false);
        break;
    case 2:
        NTPServerAddr->setEnabled(false);
        NTPPort->setEnabled(false);
        TimingInterval->setEnabled(false);
        setTimeEdit->setEnabled(true);
        break;
    default :break;
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值