VS+QT:单选按钮(Radio Button)的使用

记录一下,如何点击一个单选按钮,其他单选按钮处于无法选择的状态,参考网址:https://qtguide.ustclug.org/

方法一:利用QButtonGroup 类(如下图中的性别和状态)(图中偷懒写了英文)
方法二:修改UI文件,利用Group Box控件(如下图中的年龄阶段)

界面如下:
VS+QT:单选按钮(Radio Button)的使用_第1张图片

方法一:性别和状态的代码:
使用 QButtonGroup 类管理的多个单选按钮,好处是可以进行数值映射,不需要给每一个单选按钮都配备槽函数,而只需要根据 QButtonGroup 实例发出的 buttonClicked() 信号来统一处理整组的单选按钮,向 QButtonGroup 实例添加按钮的函数为:
void QButtonGroup::​addButton(QAbstractButton * button, int id = -1)
可以为每个单选按钮设置唯一的 id (不要用负数,-1 是不设置序号的意思),然后当 QButtonGroup 分组里的任意一个单选按钮被点击时,都会触发信号:
void QButtonGroup::​buttonClicked(int id)
根据参数里的 id 就可以判断是哪个单选按钮被点击了。

#include 
#include 
//……
//cpp构造函数代码
QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
	connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(PushButtonClick()));
	//新建性别虚拟分组,并添加按钮和id
	m_pGenderGroup = new QButtonGroup(this);
	m_pGenderGroup->addButton(ui.radioButtonmale, 0);   //男
	m_pGenderGroup->addButton(ui.radioButtonfemale, 1); //女

														//新建状态虚拟分组,并添加按钮和id
	m_pStatusGroup = new QButtonGroup(this);
	//不同分组的 id 是无关的,不冲突
	m_pStatusGroup->addButton(ui.radioButtonGreat, 0);  //棒棒哒
	m_pStatusGroup->addButton(ui.radioButtonNormal, 1);  //萌萌哒
	m_pStatusGroup->addButton(ui.radioButtonBad, 2);   //该吃药了

}

//……中间其他代码省略
void Widget::PushButtonClick()
{
    //结果字符串
    QString strResult;

    //性别分组
    int nGenderID = m_pGenderGroup->checkedId();    //获取被选中的 id
    switch (nGenderID) {
    case 0:
        strResult += tr("male\r\n");
        break;
    case 1:
        strResult += tr("female\r\n");
        break;
    default:
        strResult += tr("unchecked\r\n");
        break;
    }

    //状态分组
    int nStatusID = m_pStatusGroup->checkedId();    //获取被选中的 id
    switch (nStatusID) {
    case 0:
        strResult += tr("Great\r\n");
        break;
    case 1:
        strResult += tr("Normal\r\n");
        break;
    case 2:
        strResult += tr("Bad\r\n");
        break;
    default:
        strResult += tr("unchecked\r\n");
        break;
    }

    //年龄段四个按钮判断
	if (ui.radioButton_6->isChecked())
	{
		strResult += tr("The age stage:0-18\r\n");
	}
	else if (ui.radioButton_7->isChecked())
	{
		strResult += tr("The age stage:19-30\r\n");
	}
	else if (ui.radioButton_8->isChecked())
	{
		strResult += tr("The age stage:31-40\r\n");
	}
	else if (ui.radioButton_9->isChecked())
	{
		strResult += tr("The age stage:41-50\r\n");
	}
	else if (ui.radioButton_10->isChecked())
	{
		strResult += tr("The age stage:51-60\r\n");
	}
	else if (ui.radioButton_11->isChecked())
	{
		strResult += tr("The age stage:>60\r\n");
	}
	else
	{
		strResult += tr("The age stage:none\r\n");
	}

	//strResult 获取信息完毕,弹窗显示
	QMessageBox::information(this, tr("Information"), strResult);
}
//头文件定义代码
class QtWidgetsApplication1 : public QWidget
{
    Q_OBJECT

public:
    QtWidgetsApplication1(QWidget *parent = Q_NULLPTR);
	~QtWidgetsApplication1();

private slots:
	
	void PushButtonClick();

private:
    Ui::QTUI ui;
	QButtonGroup *m_pGenderGroup;   //性别单选按钮分组
	QButtonGroup *m_pStatusGroup;   //状态单选按钮分组
};

在这里插入图片描述

方法二:
QT Creator或者QT Designer中选择Group Box,然后将单选按钮放入其中即可
Group Box
VS+QT:单选按钮(Radio Button)的使用_第2张图片

你可能感兴趣的:(QT,C++,qt,c++)