// QRadioButton 是单选按钮,当有多个 QRadioButton 控件存在时,只能选中一个;
    // 一般在使用 QRadioButton 控件时,都需要给 QRadioButton 分组;
    // 使用 QGroupBox 控件进行分组,该控件通常带有一个边框和一个标题栏,作为容器部件来使用;
    // 需要注意的是,QGroupBox 容器内部必须使用布局控件(QLayout)进行布局;
    
    // 创建分组对象    
    QGroupBox *genderGroup = new QGroupBox(this);
    genderGroup->setTitle("性别");
    genderGroup->setGeometry(30, 20, 100, 100);
    
    QGroupBox *marryGroup = new QGroupBox("婚否", this);
    marryGroup->setGeometry(30, 150, 100, 100);
    
    // 创建4个单选框对象:指定其父对象为分组控件
    QRadioButton *rBtnMan = new QRadioButton("男", genderGroup);
    QRadioButton *rBtnWoman = new QRadioButton("女", genderGroup);
    QRadioButton *rBtnUnknown = new QRadioButton("未知", genderGroup);
    rBtnMan->setChecked(true);  // 设置默认选中
    
    // QRadioButton 有一个状态切换的信号 toggled,即该信号在状态切换时发送;
    connect(rBtnMan, &QRadioButton::toggled, [=](bool isChecked){
        if (isChecked == true)
            qDebug() << "单选框被选中了";
        else if (isChecked == false)
            qDebug() << "单选框失去焦点了";
    });
    
    QRadioButton *rBtnSpinsterhood = new QRadioButton("未婚", marryGroup);
    QRadioButton *rBtnMarried = new QRadioButton("已婚", marryGroup);
    rBtnSpinsterhood->setChecked(true);
    
    // 创建性别组布局:垂直布局;指定其父对象为分组控件
    QVBoxLayout *genderLayout = new QVBoxLayout(genderGroup);
    genderLayout->addWidget(rBtnMan);
    genderLayout->addWidget(rBtnWoman);
    genderLayout->addWidget(rBtnUnknown);
    
    // 创建婚否组布局:垂直布局;指定其父对象为分组控件
    QVBoxLayout *marryLayout = new QVBoxLayout(marryGroup);
    marryLayout->addWidget(rBtnSpinsterhood);
    marryLayout->addWidget(rBtnMarried);
    
    // 将布局控件添加到组中
    genderGroup->setLayout(genderLayout);
    marryGroup->setLayout(marryLayout);

效果:

 


上面是通过代码实现的,还可以在界面设计器上快速的布局控件。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐