2009-11-13 4 views
11

मेरे पास एक QGroupBox है जिसमें इसके अंदर कुछ QRadioButtons हैं और कुछ मामलों में मैं सभी रेडियो बटन अनचेक करना चाहता हूं। ऐसा लगता है कि एक चयन किया गया है जब यह संभव नहीं है। क्या आप इस तरह से जानते हैं कि मैं ऐसा कर सकता हूं या मुझे एक छुपा रेडियोधर्टन जोड़ना चाहिए और वांछित परिणाम प्राप्त करने के लिए उस जांच को देखना चाहिए।क्या सभी रेडियन बटन अनचेक किए जाने का कोई तरीका है

+3

यह रेडियो बटन के सिद्धांत के खिलाफ चला जाता है। परिभाषा के अनुसार, हमेशा एक चुना जाता है, हमेशा। आप इसकी आवश्यकता क्यों है? – Thomas

+4

@ थॉमस: यह आमतौर पर रेडियो बटन की परिभाषा के खिलाफ जाता है, लेकिन कई बार उपयोगी हो सकता है। एक विज़ार्ड पर विचार करें जहां उपयोगकर्ता _must_ परस्पर-अनन्य विकल्प बनाते हैं। आप उन्हें रेडियो बटन के साथ पेश कर सकते हैं, लेकिन कोई डिफ़ॉल्ट नहीं है। अब कल्पना करें कि वे पिछले पृष्ठ पर बैक अप लेते हैं और कुछ बदलते हैं जिसका मतलब है कि आपको बाकी डेटा को रीसेट करने की आवश्यकता है, जिसमें रेडियो बटन को दोबारा चुनने के लिए सेट करना शामिल है। (आदर्श रूप से, जादूगर तब तक अग्रिम नहीं कर पाएगा जब तक कि रेडियो बटनों में से कोई भी चुना नहीं जाता है।) –

+2

यही कारण है कि मुझे इसकी आवश्यकता है। –

उत्तर

25

आप इस प्रभाव को प्राप्त कर सकते हैं अस्थायी रूप से अपने सभी रेडियो बटन के लिए स्वत: विशिष्टता को बंद करने, उन्हें अनचेक, और फिर उन्हें वापस चालू करके:

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

आप QButtonGroup का उपयोग कर बातें tidier रखने के लिए को देखने के लिए चाहते हो सकता है , यह आप अपने आप को उन के माध्यम से पुनरावृत्ति के बटन के एक पूरे समूह के लिए चालू और बंद विशिष्टता बारी बजाय दूँगा:

// 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); 
} 

लेकिन, जैसा कि अन्य उत्तर कहा है, आप के बजाय आइकॉन का उपयोग करके विचार करना चाह सकते हैं, क्योंकि रेडियो इस तरह की चीज के लिए बटन वास्तव में मतलब नहीं हैं।

+0

यह व्यवहार अभी भी जरूरी है यदि रेडियो बटन की बजाय, आप पुश बटन का एक समूह समूहबद्ध कर रहे हैं। – Pierluigi

+0

@richardwb जब मैं चेक-> सेट चेक (झूठा) करता हूं, तो बटन जिसे चुना गया था स्क्रीन से गायब हो रहा है। यह आपके लिए कैसे काम कर रहा है? –

2

क्या यह "कोई नहीं" जैसे लेबल के साथ एक रेडियो बटन जोड़ने के लिए काम करेगा?

संबंधित मुद्दे