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

问题描述 投票:0回答:1

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

现在我使用这个代码:

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

这工作得很好,但也许有一个标准的 Qt 函数或方法来做到这一点?

c++ qt radio-button
1个回答
33
投票

这是

QButtonGroup
的一个用例。

如果您还没有将单选按钮分组,请使用

QButtonGroup
。对于每个按钮,使用
QButtonGroup::addButton(button, id)
为按钮分配连续的 ID,从零开始。

然后,要接收按钮的索引,请使用

QButtonGroup::checkedId()

当您使用 Qt 设计器设计表单时,您可以通过选择按钮并从上下文菜单中选择“分配到按钮组”>“新建按钮组”来对按钮进行分组。但我认为你不能手动为组中的按钮分配 ID。相反,请在 QButtonGroup::setId(button, id)

 之后使用 
setupUI
 来更改自动分配的 ID。 (它们有点令人困惑,从 -2 开始计数负数,我不知道设计师如何准确选择顺序,所以我不建议依赖该顺序。)

© www.soinside.com 2019 - 2024. All rights reserved.