2012-02-13 14 views
10

के रूप में एक सूची कास्टिंग मेरी समस्या यह है। मैं उदाहरण के लिए अलग अलग संख्यात्मक प्रकार की सूची है,:QVariant या QVariant सूची

QList<qreal> mylist; 

अब, मेरी कोड में मैं एक समारोह है कि है कि एक QVariant तर्क जो MyList है उम्मीद है। एक ही रास्ता मैं यह कर पाया है cyle के लिए एक का उपयोग कर और केवल उदाहरण के लिए दूसरी सूची

QList<QVariant> temp, 

को MyList में डेटा के सभी जोड़ने, और एक पैरामीटर के रूप में अस्थायी गुजर कर रहा है।

मैं सोच रहा था कि ऐसा करने का कोई अन्य तरीका है या नहीं।

बहुत बहुत धन्यवाद।

उत्तर

14

मुझे इसे कई बार करना पड़ा, और मेरे ज्ञान के लिए एक नई सूची बनाना एकमात्र तरीका है।

यह कुछ आप सूचियों आप कुछ एक छोटे से अधिक सजावटी कर सकता है के प्रकार बदलती के साथ अक्सर क्या करना है यह है:

template <typename T> 
QVariantList toVariantList(const QList<T> &list) 
{ 
    QVariantList newList; 
    foreach(const T &item, list) 
     newList << item; 

    return newList; 
} 

ताकि जब आप अपने समारोह है कि QVariant सूची में ले जाता है कहते हैं, तुम सिर्फ कर सकते हैं कॉल

myFunction(toVariantList(myList)); 

ध्यान दें कि दिया गया फ़ंक्शन केवल उन प्रकारों के लिए काम करेगा जो स्पष्ट रूप से QVariants में परिवर्तित हो सकते हैं।

+1

यह मुझे डर है। धन्यवाद! – aarelovich

+0

नोट QVariant स्वयं पहले से ही 'QList ' से 'QVariantList' में परिवर्तित करने में सक्षम है। इसका मतलब है कि आप रूपांतरण करने के लिए QVariant का भी उपयोग कर सकते हैं। – Dreamcooled

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