2010-08-10 54 views
1

我有三個單選按鈕,我們稱它們爲R1,R2和R3。 (R1是在所檢查的集合)QRadioButton:將組中的所有單選按鈕設置爲未選中狀態

我的問題是,我有一個名爲check()方法,使用獲取當前的單選按鈕:

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

基於哪個單選按鈕是激活的,適當的方法是進一步調用。

但是,這種方法的問題是,當表單加載時,檢查R1。然後,當我調用check()時,由於R1已經在窗體加載時被檢查過,它總是返回R1。

什麼是解決這個問題的方法?我希望取決於用戶的選擇,調用適當的方法。

所以我想知道是否有可能沒有單選按鈕時檢查表單加載?

+1

如果在表單加載時沒有選中單選按鈕,是否可以解決您的問題? – 2010-08-10 19:50:15

+1

QRadioButton默認沒有被選中,爲了在創建時檢查它,你需要調用'setChecked(True)',所以我的猜測就是你不需要設置任何按鈕。 – 2010-08-11 01:23:04

回答

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); 
相關問題