一组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);
}
我的代码中的问题在哪里?
答案 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(真的)在隐藏的那个。
祝你好运。