QRadioButton:将组中的所有单选按钮设置为未选中状态

时间:2010-08-10 17:58:56

标签: qt pyqt

我有三个单选按钮,我们称之为R1,R2和R3。 (R1在选中的集合中)

我的问题是我有一个名为check()的方法,它使用以下方式获取当前单选按钮:

def check(self):
    if R1.isChecked():
      # 
    if R2.isChecked():
      # 
    if R3.isChecked():
      #

根据哪个单选按钮处于活动状态,进一步调用相应的方法。

然而,这种方法的问题是当表单加载时,会检查R1。然后当我调用check()时,因为在表单加载时已经检查了R1,所以它只返回R1。

解决这个问题的方法是什么?我希望根据用户的选择,调用适当的方法。

所以我想知道在表单加载时是否可以不检查单选按钮?

1 个答案:

答案 0 :(得分:5)

希望这可以帮到你,最初所有的单选按钮都处于未选中状态。

     QGroupBox *groupBox = new QGroupBox(tr("Exclusive Radio Buttons"));
     QRadioButton *radio1 = new QRadioButton(tr("&Radio button 1"));
     QObject::connect(radio1,SIGNAL(clicked(bool)),this,SLOT(clickkedstate(bool)));
     radio1->setAutoExclusive(false);
     QRadioButton *radio2 = new QRadioButton(tr("R&adio button 2"));
     QObject::connect(radio2,SIGNAL(clicked(bool)),this,SLOT(clickkedstate(bool)));
     radio2->setAutoExclusive(false);
     QRadioButton *radio3 = new QRadioButton(tr("Ra&dio button 3"));
     radio3->setAutoExclusive(false);
     QObject::connect(radio3,SIGNAL(clicked(bool)),this,SLOT(clickkedstate(bool)));

     radio1->setChecked(false);
     radio2->setChecked(false);
     radio3->setChecked(false);


     QVBoxLayout *vbox = new QVBoxLayout;
     vbox->addWidget(radio1);
     vbox->addWidget(radio2);
     vbox->addWidget(radio3);
     vbox->addStretch(1);
     groupBox->setLayout(vbox);
     setLayout(vbox);