2009-11-13 10 views
11

İçinde birkaç QRadioButton bulunan bir QGroupBox'um var ve bazı durumlarda tüm radyo düğmelerinin işaretlenmesini istiyorum. Bir seçim yapıldığında bunun mümkün olmadığı gözüküyor. Bunu yapmamın bir yolunu biliyor musun yoksa gizli bir radyo düğmesi eklemem ve istenen sonucu elde etmek için onen'i kontrol etmeliyim.Tüm radyon düğmelerinin işaretli olmamasının bir yolu var

+3

Bu, radyo düğmeleri ilkesine aykırıdır. Tanım olarak, her zaman tam olarak bir tane seçilir. Niçin buna ihtiyacın var? – Thomas

+4

@Thomas: Genellikle radyo düğmelerinin tanımına aykırıdır, ancak bazen yararlı olabilir. Kullanıcının _must_'ın karşılıklı olarak özel bir seçim yaptığı bir sihirbazı düşünün. Onları radyo düğmeleriyle sunabilirsiniz, ancak varsayılan değerleri yoktur. Şimdi, bir önceki sayfaya geri döndüklerini ve bir şeyi değiştirdiklerini, yani radyo düğmelerini tekrar seçilen hiçbir değere ayarlamak da dahil olmak üzere verilerin geri kalanını sıfırlamanız gerektiği anlamına geldiğini düşünün. (İdeal olarak, sihirbaz, radyo düğmelerinden biri seçilinceye kadar ilerleyemez.) –

+2

Bu yüzden buna ihtiyacım var. –

cevap

25

geçici tekrar açmadan sonra da işaretlerini kaldırarak, tüm radyo düğmeleri için otomatik seçkin kapatarak ve ölçütü:

QRadioButton* rbutton1 = new QRadioButton("Option 1", parent); 
// ... other code ... 
rbutton1->setAutoExclusive(false); 
rbutton1->setChecked(false); 
rbutton1->setAutoExclusive(true); 

Bir şeyleri Sessizleştirme tutmak için QButtonGroup kullanarak bakmak isteyebilirsiniz bu içlerinden kendini yineleme yerine düğmeleri bir grubun tamamı için açılıp ayrıcalık dönelim edeceğiz: diğer cevaplar belirttiğimiz gibi

// where rbuttons are QRadioButtons with appropriate parent widgets 
// (QButtonGroup doesn't draw or layout anything, it's just a container class) 
QButtonGroup* group = new QButtonGroup(parent); 
group->addButton(rbutton1); 
group->addButton(rbutton2); 
group->addButton(rbutton3); 

// ... other code ... 

QAbstractButton* checked = group->checkedButton(); 
if (checked) 
{ 
    group->setExclusive(false); 
    checked->setChecked(false); 
    group->setExclusive(true); 
} 

Ancak, bunun yerine onay kutularını kullanarak düşünebilirsiniz, çünkü radyo düğmeler gerçekten bu tür şeyler için değil.

+0

Bu davranış, radyo düğmeleri yerine, bir dizi basma düğmesi gruplandırıyor olmanız durumunda hala gereklidir. – Pierluigi

+0

@richardwb, checked-> setChecked (false) öğesini işaretlediğimde, seçilen düğme ekrandan kaybolacaktır. Senin için nasıl çalışıyor? –

2

"Yok" gibi bir etiket içeren bir radyo düğmesi eklemek işe yarayacak mı?

Bu etkiyi elde edebilirsiniz
İlgili konular