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

15
我在一个组中有几个单选按钮,有没有办法获取当前选中项的索引?
目前我使用的代码是:
int getCheckedRadioButton(QWidget *w)
{
    int ii = 0;
    foreach (QRadioButton *button, w->findChildren<QRadioButton*>()) {
        if (button->isChecked()) {
            return ii;
        }
        ii++;
    }
    return -1;
}

这个方法还不错,但也许有标准的Qt函数或方法可以实现这个功能吗?
1个回答

33

这是使用QButtonGroup的一个用例。

如果您还没有将单选按钮分组,请使用QButtonGroup进行分组。对于每个按钮,请使用QButtonGroup::addButton(button, id)为按钮分配连续的ID,从零开始。

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

当您使用Qt设计器设计表单时,可以选择它们并从上下文菜单中选择“分配给按钮组”>“新按钮组”来对按钮进行分组。但是我认为您无法手动为组中的按钮分配ID。相反,在setupUI之后使用QButtonGroup::setId(button, id)以更改自动分配的ID。(它们有点混乱,从 -2 开始计数负数,而且我不知道设计师如何精确选择顺序,因此不建议依赖该顺序。)


1
真的是非常出色的回答!点赞并不能完全表达它的价值,所以我想明确地感谢你写下这篇文章 :) - waldyrious
1
非常赞同这个优秀的答案。对于初学者来说,Qt 有很多晦涩难懂之处。你的回答让我少做了很多工作。 - Mike Finch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接