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

被折叠的 条评论
为什么被折叠?



