如何找出用户选择了哪个单选按钮?

6
我有四个单选按钮,用户必须选择其中一个单选按钮。

问题是每个单选按钮都有自己与其他按钮不同的名称。
用户选择了哪个单选按钮,如何找出?
3个回答

9
将按钮添加到GroupBox中,使用findChildren,然后可以使用QButtonGroup或遍历所有按钮列表并检查radiobutton的名称。这是一种高效的方法,因为它适用于4个按钮或1000个按钮,如果有很多按钮,你应该编写大量代码。
void MainWindow::on_pushButton_15_clicked(){
    QButtonGroup group;
    QList<QRadioButton *> allButtons = ui->groupBox->findChildren<QRadioButton *>();
    qDebug() <<allButtons.size();
    for(int i = 0; i < allButtons.size(); ++i)
    {
        group.addButton(allButtons[i],i);
    }
    qDebug() << group.checkedId();
    qDebug() << group.checkedButton();
}

谢谢,我有一个简单的问题与同样的问题有关:是否可以像 setData() 一样为每个单选按钮设置值? - Lion King
@LionKing 是的,文档中说你可以为按钮设置图标和文本。 - Jablonski
1
没问题,关于我的询问,我的意思是我想为每个单选按钮设置隐藏值或数据,就像setData()函数一样,以便稍后获取它。这可能吗? - Lion King
1
@LionKing 哦,我明白了。不,按钮没有显示或其他角色,但每个按钮都是QObject子类,因此您可以使用setProperty方法设置自定义属性,并通过property方法读取它。 - Jablonski

1
您可以使用所有QT按钮都支持的'isChecked()'命令,并检查每个单选按钮。或者,您可以将函数连接到“toggled(bool isChecked)”信号,并使用它来更新一个值,指示哪个单选按钮被选中。

每个单选按钮的名称怎么样?如果每个单选按钮有不同的名称,那也没问题。 - Lion King
你应该根据标签的内容为单选按钮命名,并在代码中跟踪它们。你可以使用text()命令,但无论如何你都必须选择要使用它的单选按钮。 - SimLeek

0

四个ID的数值应该是连续的。在此基础上,调用 GetCheckedRadioButton 函数来确定哪一个被选中。


Qt5 中是否有 GetCheckedRadioButton 函数? - Lion King

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