मैं परीक्षण कोड लिख रहा हूं जो स्वचालित रूप से सभी Q_PROPERTY के विगेट्स के माध्यम से पुन: सक्रिय हो जाएगा और कुछ गुण qRegisterMetaType के माध्यम से पंजीकृत प्रकारों का उपयोग कर रहे हैं। अगर मैं इसे QVariant में पढ़ना/लिखना चाहता हूं तो मुझे वेरिएंट :: उपयोगकर्ता टाइप टाइप करने की आवश्यकता है जब उन्हें संस्करण में संग्रहीत किया जाए। अब तक सब ठीक है।QVariant प्रकार QVariant को सत्यापित कैसे करें :: UserType अपेक्षित प्रकार है?
लेकिन जब मैं इन गुणों के पढ़ने और लिखने का परीक्षण करना चाहता हूं, तो मुझे उनके प्रकार को भी जानने की आवश्यकता है। उन सामानों के लिए जो पहले से ही मानक क्यूटी प्रकार हैं, मैं इसे QVariant :: प्रकार() के माध्यम से कर सकता हूं लेकिन जैसा कि मेरे पास बहुत से उपयोगकर्ता हैं, यह कैसे पूरा किया जाएगा?
QVariant की एपीआई से, मैं इस देखा:
bool QVariant::canConvert (Type t) const
लेकिन मैं थोड़ा संदिग्ध हूँ कि अगर यह enums के मामले में गलत प्रकार के लिए नेतृत्व करेंगे?
तो, QVariant में किस प्रकार का यूज़रटाइप संग्रहीत किया जाता है, यह सत्यापित करने का मूर्ख तरीका क्या होगा?
हालांकि ऐसा लगता है कि QVarian के मामले में टी :: UserType संस्करण, typeName() विधि "UserType" और typeName() देता है QVariant :: UserType enum value देता है। तो दोनों बेकार हैं – rasjani
ऑब्जेक्ट टाइम्स ठीक हैं, मैं टाइपकास्टिंग के साथ चेक भी कर सकता हूं ताकि आपका उदाहरण भी ठीक से काम करता है। लेकिन मेरा सवाल एनम के बारे में था जो कक्षा प्रकार नहीं है और कोई भी किसी भी संख्यात्मक चर को एक enum में टाइपकास्ट कर सकता है। लेकिन जैसा कहा। मैं आपका कोड जांचूंगा। – rasjani
आह, क्षमा करें, मैंने उस हिस्से को नहीं देखा। मैंने कोशिश की और ऐसा लगता है कि एक enum प्रकार को Q_DECLARE_METATYPE या qRegisterMetaType के साथ पंजीकृत करना संभव है और इसे उसी तरह उपयोग करें। दस्तावेज़ केवल सार्वजनिक डिफ़ॉल्ट कन्स्ट्रक्टर के साथ कक्षा या संरचना के बारे में बात करते हैं, प्रतिलिपि बनाने वाले और विनाशक की प्रतिलिपि बनाते हैं, इसलिए मुझे पूरी तरह से यकीन नहीं है, लेकिन मुझे लगता है कि इसे किसी भी प्रकार के लिए काम करना चाहिए जिसमें सृजन, प्रतिलिपि और विनाश के लिए एक ही अंतर्निहित इंटरफेस है। – Leiaz