QGroupBox 找到选中的单选按钮

Posted

技术标签:

【中文标题】QGroupBox 找到选中的单选按钮【英文标题】:QGroupBox find selected Radio Button 【发布时间】:2017-03-30 01:06:47 【问题描述】:

我创建了一个简单的 UI,其中包含一个 QGroupBox 和一堆 QRadioButtons(准确地说是 32 个),我希望能够找到所选的一个。

我查看了论坛和其他东西,但我找到的答案不起作用,并且参考了一个关于 QGroupBox 不存在方法的文档。

鉴于以下 sn-p,我将如何找到选定的 QRadioButton(如果有)?

QGroupBox* thingGroup = ui->thingGroupBox;

【问题讨论】:

您想在选择时获取还是随时获取? 【参考方案1】:

如果您想在选择其中一个时获取它,您可以使用 toogled 信号,将其连接到某个插槽并使用 sender () 函数并将其转换为 QRadioButton。

*.h

public slots:
    void onToggled(bool checked);

*.cpp

QGroupBox *thingGroup = ui->groupBox;

QVBoxLayout *lay = new QVBoxLayout;

thingGroup->setLayout(lay);

for(int i = 0; i < 32; i++)
    QRadioButton *radioButton = new QRadioButton(QString::number(i));
    lay->addWidget(radioButton);
    connect(radioButton, &QRadioButton::toggled, this, &your Class::onToggled);

插槽:

void your Class::onToggled(bool checked)

    if(checked)
        //btn is Checked
        QRadioButton *btn = static_cast<QRadioButton *>(sender());
    


【讨论】:

唯一的问题是我有 32 个单选按钮,这意味着我必须复制粘贴同一行 32 次。一旦客户按下“下一步”按钮,我只需要获得正确的单选按钮。 是否有更有效的方法绕过单个单选按钮? 我使用了 Qt 设计器,只是将所有单选按钮拖放到 groupbox 的子项中。 等一下,我的错,你的代码完全符合我的意愿。我认为每个单选按钮都需要 *.h 段。现在接受这个答案,感谢您的帮助。

以上是关于QGroupBox 找到选中的单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

更改单选按钮选中状态时如何从单选按钮组中的单选按钮获取文本

取消选中带有 Material UI 的单选按钮

取消选中反应中的单选按钮

在选中的单选按钮上启用/禁用 RadDatePicker

让我的单选按钮在 Android 中被选中

MFC的单选按钮、复选框问题