目录
Qt 单选按钮的分组与不分组,分组导致 autoExclusive排他自动失效 (**)
=================================
Qt 单选按钮的分组与不分组,分组导致 autoExclusive排他自动失效 (**)
“同一个父窗体”或“一个button group”,这就是分组。如果没有进行分组,则默认拥有相同父窗体的radio buttons都将具有相互排他性,所以如果你想在一个窗体中表达多组radio buttons的效果,需要显式地对它们进行分组,可以使用QGroupBox或者QButtonGroup。
建议使用QButtonGroup,因为它仅仅是一个容器,不会有任何视觉表现,并且对于包含在它里面的子buttons,QButtonGroup提供比QGroupBox方便的信号槽操作。
显示分组示例:Dlg.cpp
mRadioGroup_1 = new QButtonGroup(this);
mRadioGroup_1->addButton(ui.radioButton);
mRadioGroup_1->addButton(ui.radioButton_2);
mRadioGroup_2 = new QButtonGroup(this);
mRadioGroup_2->addButton(ui.radioButton_3);
mRadioGroup_2->addButton(ui.radioButton_4);
Exclusive 排他的;独占的;独家的
autoExclusive的bool型属性,它是QAbstractButton类的属性,该属性用于控制一个button是否具有排他性(auto-exclusivity)
如果autoExclusive为true,属于同一个父窗体的所有checkable按钮的行为将表现得与它们被放在一个exclusive的button group中一样,任何时刻都只能有一个按钮处于checked状态。不过别担心, autoExclusive属性的缺省值为false(除了QRadioButton)。
autoExclusive属性会自动失效失效
还要注意的是,如果buttons已经放在了一个button group,那么,autoExclusive属性将失效。
QButtonGroup默认是exclusive的,所以只要它的组内的所有buttons是checkable的,不管是不是QRadioButton,都将表现得与QRadioButton一样。
最后如果你创建了一个exclusive的button group,最好为它设置一个初选项,否则组内将没有任何一个button被选中,
如图所示,将没有分组的两个按钮的autoExclusive前面的勾去掉,则不会被强制排他性
————————————————
版权声明:本文为CSDN博主「小MarkK」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/martinkeith/article/details/102625146