C++ 将一个QRadioButton分组为几个QButton组
例如,我有四个C++ 将一个QRadioButton分组为几个QButton组,c++,qt,C++,Qt,例如,我有四个QRadioButtonsrb1,rb2,rb3,rb4。我将rb1和rb3设置为选中状态: rb1->setChecked(true); rb3->setChecked(true); 此外,我还有四个QButtonGroups:bg12、bg34、bg13和bg24,并将前两个设置为非独占(默认情况下): 第一种情况:我将rb1和rb2添加到bg12,将rb3和rb4添加到bg34。然后,我将所有按钮添加到网格布局中,显示小部件,以及所有这些东西,一切都按预期工作(
QRadioButton
srb1
,rb2
,rb3
,rb4
。我将rb1
和rb3
设置为选中状态:
rb1->setChecked(true);
rb3->setChecked(true);
此外,我还有四个QButtonGroup
s:bg12
、bg34
、bg13
和bg24
,并将前两个设置为非独占(默认情况下):
第一种情况:我将rb1
和rb2
添加到bg12
,将rb3
和rb4
添加到bg34
。然后,我将所有按钮添加到网格布局中,显示小部件,以及所有这些东西,一切都按预期工作(两个按钮处于活动状态,一行中的按钮排除其行中的其他按钮)
第二种情况:我将rb1
和rb2
添加到bg12
,将rb3
和rb4
添加到bg34
。然后我将rb1
和rb3
添加到bg13
,将rb2
和rb4
添加到bg24
。现在它不像我预期的那样工作,它们的行为都像«自由»按钮,我可以选中/取消选中其中任何一个。那么,我做错了什么
Upd:我也用QPushButton
s尝试过它(所以,没有排他性之类的东西),它看起来就像是按钮已经在QButtonGroup
中了,我添加了另一个按钮,它不再属于第一个按钮:(
我猜,你可能想知道我为什么要做这个wierd的事情——我会解释。我想保留一个向量,它是由
QRadioButton
s对组成的,每对中的一个按钮必须排除其对中的另一个按钮(它们代表两个排他状态),所以我想将每对中的按钮分组为排他QButtonGroup
(如示例中的bg12
和bg34
),并将每对的所有第一个按钮添加到另一个QButtonGroup
(非独占,如示例中的bg13
)然后给它一个id。这样,我就可以用类提供给我们的一个信号和id来处理状态变化。也许有一个更简单的方法?QAbstractButton将一个QButtongGroup
作为成员,所以一个按钮只能属于一个组
但是对于非独占组,您可以使用
QSignalMapper
s。哇,QSignalMapper正是我需要的。非常感谢!
bg13->setExclusive(false);
bg24->setExclusive(false);