2015-11-19 93 views
5

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

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的标准函数或办法做到这一点?

回答

10

这是一个用例QButtonGroup

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

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

当您使用Qt设计器来设计表单时,可以通过选择它们并从上下文菜单中选择“分配到按钮组”>“新建按钮组”来分组按钮。但我认为您无法手动将ID分配给组中的按钮。请在setupUI之后使用QButtonGroup::setId(button, id)以更改自动分配的ID。 (他们有点令人困惑,从-2开始计算负数,我不知道设计师是如何精确选择订单的,所以我不建议依赖该订单。)

+0

非常好的答案! upvotes不正义,所以我想我会明确地说谢谢你的写作:) – waldyrious

+0

同上的优秀答案。对于新手来说,对于Qt来说有很多东西是愚蠢的。你的回答使我无法做更多的工作。 –

相关问题