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

时间:2015-11-19 16:20:46

标签: c++ qt radio-button

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

enter image description here

现在我使用这段代码:

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

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

1 个答案:

答案 0 :(得分:16)

这是QButtonGroup的用例。

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

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

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