QRadioButton 组设置

Qt中使用多于一个群组RadioButton时,由于QRadioButton的特性,所按钮都是一个群组每次只能选择一个,要使得多组RadioButton相互独立,需要用到QButtonGroup这个功能,把RadioButton加到QButtonGroup里面,实现多组RadioButton的相互独立;具体实现方法有两种。

一种程序实现:灵活多变,具体代码如下:

#include<QRadioButton>
#include<QButtonGroup>
QRadioButton * m_BtnA1 = new QRadioButton("第一组第一个按钮");
QRadioButton * m_BtnA2 = new QRadioButton("第一组第二个按钮");
QRadioButton * m_BtnB1 = new QRadioButton("第二组第一个按钮");
QRadioButton * m_BtnB2 = new QRadioButton("第二组第二个按钮");

QButtonGroup * BtnGroupA = new QButtonGroup;
QButtonGroup * BtnGroupB = new QButtonGroup;

BtnGroupA->addButton(m_BtnA1,0);
BtnGroupA->addButton(m_BtnA2,1);
BtnGroupA->setExclusive(true);//使m_BtnA1与m_BtnA2互斥

BtnGroupB->addButton(m_BtnB1,0);
BtnGroupB->addButton(m_BtnB2,1);
BtnGroupB->setExclusive(true);
设置组关键是:BtnGroup->setExclusive(true);让一个group中的按钮彼此互斥,QCheckbox控件也可以达到类似的效果。

一种在UI界面上设置也可实现此效果:具体操作,先加入需要的布局,在布局中加入需要的QRadioButton数量,再将布局变形为QGroupBox即可达成效果!

可以使用QButtonGroup和QVBoxLayout来实现设置QRadioButton的功能。 首先,我们需要创建QButtonGroup并将每个QRadioButton添加到该。然后,将该添加到QVBoxLayout,以便我们可以在垂直方向上排列多个QRadioButton。 以下是一个示例代码,其包含两个QRadioButton: ``` python from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QRadioButton, QButtonGroup class Example(QWidget): def __init__(self): super().__init__() # 创建两个QRadioButton group1 = QButtonGroup(self) group2 = QButtonGroup(self) # 添加QRadioButton1 rb1 = QRadioButton('选项1', self) rb2 = QRadioButton('选项2', self) rb3 = QRadioButton('选项3', self) group1.addButton(rb1) group1.addButton(rb2) group1.addButton(rb3) # 添加QRadioButton2 rb4 = QRadioButton('选项A', self) rb5 = QRadioButton('选项B', self) rb6 = QRadioButton('选项C', self) group2.addButton(rb4) group2.addButton(rb5) group2.addButton(rb6) # 创建垂直布局并添加QRadioButton vbox = QVBoxLayout() vbox.addWidget(rb1) vbox.addWidget(rb2) vbox.addWidget(rb3) vbox.addWidget(rb4) vbox.addWidget(rb5) vbox.addWidget(rb6) # 将布局设置为窗口的主要布局 self.setLayout(vbox) self.setWindowTitle('多QRadioButton示例') self.setGeometry(300, 300, 300, 200) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 运行这段代码将显示一个窗口,其包含两个QRadioButton,每个都包含三个选项。您可以根据需要添加更多并将它们添加到垂直布局
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值