QRadioButton 放在组合框QGroupBox中,再点击时,即使有多个QRadioButton按钮,同时选中的也就只有一个。 如下图所示,
对于多个QRadioButton,每个按钮都写一个槽函数是不太明智的选择,需要将QRadioButton放在
QButtonGroup进行管理,
- QButtonGroup *m_pGroup;//只有一个group
-
- //添加控件
-
- for(int i = 0; i < FUN_NUMBER; i++)
- {
- m_pGroup=new QButtonGroup(this);
- }
-
- //QRadioButton::idToggled;
- m_pGroup->addButton(ui->drag_radioButton,0);
- m_pGroup->addButton(ui->selectrect_radioButton,1);
- m_pGroup->addButton(ui->tracer_radioButton,2);
- m_pGroup->addButton(ui->resetcurve_radioButton,3);
-
- //不想这样写信号槽函数
- //connect(m_pGroup,SIGNAL(idClicked(int)),this,SLOT(onRadioCorespond(int)));
-
-
-
- void (QButtonGroup:: * pClick)(int time) = &QButtonGroup::buttonClicked;
- connect(m_pGroup, pClick, this, &Widget::onRadioCorespond);//传递一个参数
-
- //onRadioCorespond是槽函数
-
- void Widget::onRadioCorespond(int nCursel)
- {
- //输出 选中的是哪个radio按钮
- qDebug() <<"nCursel = "<<nCursel;
- }
注意: 我的qt是5.12.6 ,信号是 QButtonGroup::buttonClicked,
网上查到的消息是idClicked, qt5.12.6版本的没有这个信号