(7条消息) 将QT中QRadioButton按钮从选中状态设置为未选中状态

笔者初学QT,在开发过程中,遇到了一个问题,比如说像下图这样的情况

假如要重新考试 那么对于软件来说,应该要做的一个措施就是,在用户点击Yes之后,将用户所有的已经选中的答案的状态设为未选中状态,那么怎样设置呢?我在想到这个问题的时候,也是不知所措,但这对于开发者来说便是一个需求,经过笔者不懈努力的查看文档,才发现:这种按钮你点击之前,它的属性是UnChecked,点击以后,属性会变成Checked,所以我们要做的就是,将它的属性变成UnChecked.
在Button的方法里面,有一个方法是setChecked(bool b)方法,这个方法的作用就是可以将它的属性设置为UnChecked属性,于是我知道以后,觉得这不是挺简单的嘛,于就有了下面这段代码

//m_button是一个QRadioButton的数组
for(int i=0;i<10;i++)
{
m_button[i]->setChecked(false);
}

我以为这样就结束了,但是我运行程序以后发现,事情并没有这么简单,所有的按钮并未像我所想的那样,成为未选中状态,这就有点无语了,难道是setChecked方法没用吗,当然不是,后来我想,之所以没效果,是因为setChecked方法相当于是初始化,新建一个按钮的时候,它的状态默认的是UnChecked,而你初始的时候已经是Checked状态了,所以即使调用了也不会改变它的值,瞅了一眼文档,和setChecked方法紧挨着有一个setCheckable方法,作用便是,设置按钮是否可选,如果是false,那么这个按钮你就点不了,既然一个按钮不可选中,那么它肯定是UnChecked状态的
因此我们可以将代码改成

for(int i=0;i<10;i++)
{
m_button[i]->setCheckable(false);
m_button[i]->setCheckable(true);
}

先将它设置为不可选中,使它的属性变为UnChecked状态,然后再将其设置为可选中,因此这样就能改变按钮的状态了!

(0)

相关推荐