2015-11-19 18 views
5

में चेक किए गए रेडियो बटन की अनुक्रमणिका प्राप्त करें मेरे पास समूह में कई रेडियो बटन हैं, क्या वर्तमान में चेक किए गए आइटम की अनुक्रमणिका प्राप्त करने का कोई तरीका है?समूह

int getCheckedRadioButton(QWidget *w) 
{ 
    int ii = 0; 
    foreach (QRadioButton *button, w->findChildren<QRadioButton*>()) { 
     if (button->isChecked()) { 
      return ii; 
     } 
     ii++; 
    } 
    return -1; 
} 

जो काफी अच्छी तरह से काम करता है, लेकिन शायद वहाँ एक मानक क्यूटी समारोह या यह करने के लिए तरीका है:

enter image description here

अभी मैं इस कोड का उपयोग करें?

उत्तर

10

यह QButtonGroup के लिए उपयोग का मामला है।

यदि आप पहले से नहीं हैं तो QButtonGroup के साथ अपने रेडियो बटन को समूहित करें। प्रत्येक बटन के लिए, शून्य से शुरू होने पर, अपने बटन पर लगातार आईडी को असाइन करने के लिए QButtonGroup::addButton(button, id) का उपयोग करें।

फिर, बटन की अनुक्रमणिका प्राप्त करने के लिए, QButtonGroup::checkedId() का उपयोग करें।

जब आप अपने फॉर्म को डिज़ाइन करने के लिए क्यूटी डिजाइनर का उपयोग करते हैं, तो आप उन्हें चुनकर बटन का चयन कर सकते हैं और संदर्भ मेनू से "बटन समूह पर असाइन करें"> "नया बटन समूह" चुन सकते हैं। लेकिन मुझे लगता है कि आप समूह में बटनों को मैन्युअल रूप से आईडी असाइन नहीं कर सकते हैं। इसके बजाय, स्वचालित रूप से असाइन किए गए आईडी को बदलने के लिए setupUI के बाद QButtonGroup::setId(button, id) का उपयोग करें। (वे उलझन में हैं, 2 से नकारात्मक गिनती करते हैं और मुझे नहीं पता कि डिजाइनर बिल्कुल ऑर्डर कैसे चुनता है, इसलिए मैं उस आदेश पर निर्भर रहने की अनुशंसा नहीं करता।)

+0

वास्तव में उत्कृष्ट उत्तर! उत्थान इसे न्याय नहीं करते हैं, इसलिए मैंने सोचा कि मैं स्पष्ट रूप से इसे लिखने के लिए धन्यवाद कहूंगा :) – waldyrious

+0

उत्कृष्ट उत्तर पर डितो। नौसिखिया के बारे में क्यूटी के बारे में बहुत कुछ है। आपके जवाब ने मुझे और काम करने से रोक दिया। –