मैं QWidget
में संग्रहीत करने के लिए एक पूर्णांक संख्या सेट करना चाहता हूं, और मुझे लगता है कि setUserData
सदस्य फ़ंक्शन चाल करेगा लेकिन मुझे कोई दस्तावेज़ नहीं मिल रहा है। कोई संकेत?QWidget के लिए उपयोगकर्ता डेटा कैसे सेट करें?
उत्तर
आप QObject::setProperty()
(जो निश्चित रूप से QWidget
द्वारा विरासत में मिला है) की तलाश में हो सकता है।
क्या किसी ऑब्जेक्ट (क्लास फू का कहना है) को एक संपत्ति के रूप में असाइन करना संभव है और केवल स्ट्रिंग्स, इनट्स या अन्य साधारण डेटा प्रकार गुणों का उपयोग करने के बजाय पूछे जाने पर इसे वापस प्राप्त करना संभव है? – SexyBeast
मुझे यकीन नहीं है क्योंकि मैं एक क्यूटी विशेषज्ञ नहीं हूं। लेकिन मैंने जो विरासत विरासत प्रकार बनाने के लिए नीचे पोस्ट किया है वह निश्चित रूप से मनमानी वस्तु के लिए काम करेगा। आप "फू" के साथ "डेटा" को सरल बना देंगे। –
मैं क्यूटी में एक विशेषज्ञ नहीं हूं, लेकिन क्यों न केवल QWidget
से विरासत प्राप्त करने वाली कक्षा बनाएं और इसमें पूर्णांक है? इसलिए जैसा:
class MyDerivedWidget : public QWidget
{
public:
MyDerivedWidget();
private:
Data *myUserData;
};
या यदि आप setUserData
चेकआउट पिछले पोस्ट here के प्रयोग पर जोर देते हैं।
यह है, यदि आप स्पष्ट MyDerivedWidget (QWidget parent = 0) {}, सरल और प्रभावी करते हैं, फिर भी, यह मेरे लिए थोड़ा हैकी लगता है, लेकिन उपयोगी उत्तर इसलिए मैंने मतदान किया, thx। –
आईएमओ, यह दो उत्तरों की कम से कम हैकी है। यदि आप एक QWidget (केवल एक सामान्य संरचना का उपयोग कर) में डेटा स्टोर करना चाहते हैं, तो उचित तरीका होगा कि आप जिस वर्ग को चाहते हैं उसे ले जाएं, अधिक कार्यक्षमता जोड़ें और इसे 'सही' करें। विरासत में कम से कम, आप एक्सेसर्स को जोड़ सकते हैं और इस तरह के एक अतिरिक्त यादृच्छिक संपत्ति के साथ एक मानक QWidget पास करने से अधिक उपयोगी बनाने के लिए ... – g19fanatic
@ g19fanatic, सम्मान से असहमत (और स्पष्ट रूप से लाइब्रेरी डिजाइनर मेरे पर हैं पक्ष, अन्यथा 'सेटप्रोपर्टी()' मौजूद नहीं होगा)। कभी-कभी इसे प्राप्त करने के लिए पूरे सबक्लास को डिज़ाइन और बनाए रखने के बिना, उदाहरण के साथ जुड़े एक साधारण "डेटा का बैग" होना बहुत सुविधाजनक हो सकता है। –
QObject :: setUserData को "आंतरिक" के रूप में चिह्नित किया गया है - शायद इसे उपयोग करने से बचने के लिए सलाह दी जाती है। –