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

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

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

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

QGroupBox* thingGroup = ui->thingGroupBox;

【问题讨论】:

  • 您想在选择时获取还是随时获取?

标签: c++ qt qt5 qradiobutton qgroupbox


【解决方案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 段。现在接受这个答案,感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多