QCheckBox 复选框

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangxiaobei2017/article/details/77722496

这里写图片描述
如图所示,打算利用QT创建一个用户协议对话框,复选框指的是“同意本协议”。达到的目的是:选中同意本协议前,按键“下一步”是灰色,选中同意本协议,按键“下一步”恢复功能。
程序流程图:
这里写图片描述

  1. 首先要在Qt Designer 中创建需要的布局,textBrowser用来显示协议文本,checkBox创建复选框,pushButton创建按钮“下一步”和“取消”;
  2. 更改复选框和按钮的名称,作为ui调用的函数;
  3. 将“下一步”属性中的enable 取消选中,使其在一开始就是灰色的,后期通过复选框让它恢复作用;
  4. 在头文件中定义 槽(处理函数),这里声明的函数是自己定义的,
private slots:
    int OnCheckChanged();

5 在.cpp中将刚才定义的函数复制过来,这个函数体就是用来完成复选框被选中后的响应的,也就是说复选框被选中后,程序进入当前这个函数体中,你在这个函数里写什么,程序就执行什么,因为我们要实现让“下一步”变成可以选择的状态,使用setEnabled(true)函数即可

int Qt5_A::OnCheckChanged()
{
    if (ui.cbxAgree->isChecked())
    {
        ui.btnNext->setEnabled(true);
    }
    else
    {
        ui.btnNext->setEnabled(false);
    }
    return 0;

}

6 这里使用了if…else…是因为在复选框取消选中时,同时要“下一步”按钮再次变灰;
7 现在需要进行connect连接信号和槽,才能实现刚才我们说的进入到函数的命令,

connect(ui.cbxAgree,
        SIGNAL(stateChanged(int)),
        this, SLOT(OnCheckChanged()));

第一个参数是复选框的名字,它是ui的一个对象;第二个参数是复选框对应的函数原型(信号),通过Qt文档可以查找每种响应所对应的信号;第三个参数是 this (不清楚为什么,写它就是了),第四个就是你在头文件中定义的槽;
8 这时候已经把复选框的响应与按钮“下一步”关联起来了,其中的主要思想就是建立信号与槽的关联。

猜你喜欢

转载自blog.csdn.net/wangxiaobei2017/article/details/77722496