几经排查,发现是按钮组的Exclusive
属性造成的。Exclusive
属性执行后, 当有一个选中,并且没有选择其它按钮时,此按钮一直为选中状态。即使执行了按钮的setchecked(false)。
如果QAbstractButton
属于独占组,则不能取消选中它,问题中提供的代码就是这种情况。
这是预期的行为,正如我在另一个问题中解释的那样,它被记录下来了。
您可以尝试更改lambda以删除组上的Exclusive
属性,然后取消选中所有按钮,然后恢复该属性。这意味着:
btnGroup->setExclusive(false);
for (auto& x : btns) {
....
}
btnGroup->setExclusive(true);