获取组中选中单选按钮的索引
Get index of checked radio button in group
我有几个单选按钮在一个组中,有没有办法获取当前选中项的索引?
现在我使用这个代码:
int getCheckedRadioButton(QWidget *w)
{
int ii = 0;
foreach (QRadioButton *button, w->findChildren<QRadioButton*>()) {
if (button->isChecked()) {
return ii;
}
ii++;
}
return -1;
}
效果很好,但也许有标准的 Qt 函数或方法可以做到这一点?
这是 QButtonGroup
的用例。
如果您还没有将单选按钮与 QButtonGroup
组合在一起。对于每个按钮,使用 QButtonGroup::addButton(button, id)
为您的按钮分配连续的 ID,从零开始。
然后,要接收按钮的索引,请使用 QButtonGroup::checkedId()
。
当您使用 Qt 设计器设计表单时,您可以通过选择按钮并从上下文菜单中选择 "Assign to button group" > "New button group" 来对按钮进行分组。但我认为您不能手动为组中的按钮分配 ID。相反,在 setupUI
之后使用 QButtonGroup::setId(button, id)
以更改自动分配的 ID。 (他们有点混乱,从-2算负数,我不知道设计师是如何准确选择顺序的,所以我不建议依赖那个顺序。)
我有几个单选按钮在一个组中,有没有办法获取当前选中项的索引?
现在我使用这个代码:
int getCheckedRadioButton(QWidget *w)
{
int ii = 0;
foreach (QRadioButton *button, w->findChildren<QRadioButton*>()) {
if (button->isChecked()) {
return ii;
}
ii++;
}
return -1;
}
效果很好,但也许有标准的 Qt 函数或方法可以做到这一点?
这是 QButtonGroup
的用例。
如果您还没有将单选按钮与 QButtonGroup
组合在一起。对于每个按钮,使用 QButtonGroup::addButton(button, id)
为您的按钮分配连续的 ID,从零开始。
然后,要接收按钮的索引,请使用 QButtonGroup::checkedId()
。
当您使用 Qt 设计器设计表单时,您可以通过选择按钮并从上下文菜单中选择 "Assign to button group" > "New button group" 来对按钮进行分组。但我认为您不能手动为组中的按钮分配 ID。相反,在 setupUI
之后使用 QButtonGroup::setId(button, id)
以更改自动分配的 ID。 (他们有点混乱,从-2算负数,我不知道设计师是如何准确选择顺序的,所以我不建议依赖那个顺序。)