获取组中已选中单选按钮的索引

sas*_*alm 7 c++ qt radio-button

我在组中有几个单选按钮,有没有办法获取当前检查项目的索引?

在此输入图像描述

现在我用这个代码:

int getCheckedRadioButton(QWidget *w)
{
    int ii = 0;
    foreach (QRadioButton *button, w->findChildren<QRadioButton*>()) {
        if (button->isChecked()) {
            return ii;
        }
        ii++;
    }
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

哪个效果不错,但也许有标准的Qt功能或方法呢?

lee*_*mes 20

这是一个用例QButtonGroup.

QButtonGroup如果您还没有将收音机按钮分组.对于每个按钮,用于QButtonGroup::addButton(button, id)为按钮分配连续的ID,从零开始.

然后,要接收按钮的索引,请使用QButtonGroup::checkedId().

当您使用Qt设计器设计表单时,您可以通过选择它们并从上下文菜单中选择"分配给按钮组">"新建按钮组"来对按钮进行分组.但我认为您无法手动为组中的按钮分配ID.而是使用QButtonGroup::setId(button, id)after setupUI来更改自动分配的ID.(它们有点令人困惑,从-2计算为负数,我不知道设计师如何精确地选择订单,因此我不建议依赖该订单.)