我可以取消选中组框内的一组RadioBottom吗?

时间:2010-05-12 05:24:26

标签: c++ qt qt4 radio-button groupbox

一组Box内的无线电底部将被视为一组底部。它们是相互排斥的。我怎样才能清理他们的检查状态?

我有几个无线电底部,其中一个已经过检查。 我怎样才能“清理”(取消选中)所有无线电底部? “setChecked”在组内不起作用,我试图做以下事情但是失败了。

我的代码如下,radioButtom在groupBox中,我想取消选中它。 第一个setChecked确实有效,但第二个没有,radioBottom没有被取消选中

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    QRadioButton *radioButton;
    ui->setupUi(this);
    radioButton->setChecked(true);
    radioButton->setChecked(false);
}

我的代码中的问题在哪里?

2 个答案:

答案 0 :(得分:4)

诀窍是在取消选中之前禁用autoExclusive属性,然后重新启用它。

ui->radioButton->setChecked(true);
ui->radioButton->setAutoExclusive(false);
ui->radioButton->setChecked(false);
ui->radioButton->setAutoExclusive(true);

此后,radioButton未经检查。

答案 1 :(得分:1)

在Qt文档中说:一个QRadioButton是一个可以打开(选中)或关闭(未选中)的选项按钮。单选按钮通常向用户呈现“众多”选项之一。在一组单选按钮中,一次只能检查一个单选按钮;如果用户选择另一个按钮,则先前选择的按钮将被关闭。 AFAIK我认为您将无法检查所有QRadioButtons。

在我的练习中,我从未见过在一个对话框/窗口中立即检查QRadioButtons。但可能是我错了。

作为我身边的解决方案,我可能会建议你创建一个额外的QRadioButton然后隐藏它,所以,当你需要在一个小部件上隐藏所有QRadioButton时,你可以设置setChecked(真的)在隐藏的那个。

祝你好运。