我需要检查一个接一个地知道哪个单选按钮在Qt组检查

Do I need to check one by one to know which radiobutton is checked in a group in Qt

本文关键字:一个 检查 单选按钮 Qt      更新时间:2023-10-16

我知道我可以使用这种代码来知道哪个单选按钮在Qt中被选中:

int checkButton;
if( ui->radioButton_0->isChecked() ){
    checkButton = 0;
}else if(ui->radioButton_1->isChecked()){
    checkButton = 1;
}else if 
...

是否有任何更容易的方法来知道哪个单选按钮在Qt组中检查。我认为如果有这种更容易的方法,当单选按钮组很大时,这真的很有帮助。代码可能看起来像这样:

int checkbutton = groupName.getCheckButtonIngroup();

我们也可以在Qt设计器的组框中放置一些单选按钮,在此之后找到组框的孩子,将孩子添加到buttonGroup并使用checkedId或checkedButton方法。

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();
}

首先,您需要将所有单选按钮添加到按钮组中。有两种方法:

  1. 在Qt设计器中选择您想要添加的所有单选按钮并从上下文菜单中选择Assign to button group
  2. 从代码。创建一个新的QButtonGroup,并添加按钮与QButtonGroup::addButton

那么任何时候你都可以知道哪个按钮被选中了:

  1. 如果你需要一个选中按钮的指针使用QButtonGroup::checkedButton

  2. 如果需要多个按钮,则需要使用addButton(QAbstractButton* button, int id)手动添加按钮到群组中。在此之后,使用QButtonGroup::checkedId来获得选中按钮的标识符。

相关文章: