पर फ़्लोट भेजना हम वर्तमान में Qt 4.5.x से 4.7.3 पर माइग्रेट हुए हैं, और तब से हमें डीबीस ('फ्लोट' डीबीस प्रकार के रूप में पंजीकृत नहीं) पर फ़्लोट भेजने की कोशिश करते समय त्रुटियां मिलती हैं।QDBus
उदाहरण के लिए:
QVariantList getTemperatures()
{
QVariantList retVal;
retVal << getSensorValue(1) << getSensorValue(2);
return retVal;
}
getSensorValue
एक विधि है कि एक float
मान देता है।
चूंकि 4.6 से पहले संस्करण में एक QVariant में केवल double
मान हो सकता है, तो वापसी मानों को तत्काल double
पर डाला गया था, और double
डीबीस के साथ भेजा जा सकता है। लेकिन, संस्करण 4,6 के बाद, एक QVariant में float
हो सकता है; नतीजतन, डीबीस मॉड्यूल शिकायत करता है कि floats
ज्ञात डेटाटाइप नहीं है - जो सही है।
मैं float
डेटाप्रकार रजिस्टर करने के लिए, और स्ट्रीमिंग ऑपरेटरों को लागू करने की कोशिश की:
qDBusRegisterMetaType<float>();
QDBusArgument &operator<<(QDBusArgument &argument, const float &myFloat)
{
return argument << static_cast<double>(myFloat);
}
const QDBusArgument &operator>>(const QDBusArgument &argument, float &myFloat)
{
double d;
argument >> d;
myFloat = static_cast<float>(d);
return argument
}
लेकिन, जब मैं QDBusArgument
(operator <<
) में double
स्ट्रीम करने के लिए प्रयास करते हैं, मैं कोई त्रुटि मिलती है कि float
डेटाप्रकार double
व्यवहार को ओवरराइड करने का प्रयास कर रहा है।
यह भी सामान्य है, क्योंकि अंतर्निहित QDbus प्रणाली ने पहले से ही डेटाटाइप ('f'
) को QDBusArgument
पर स्ट्रीम किया है, और उसके बाद यह पता चलता है कि double
स्ट्रीम में प्रवेश कर रहा है।
और अब मेरे सवाल: किसी को भी पता है कि कैसे मैं बैकएंड तरीकों में doubles
के साथ सभी float
डेटाटाइप्स को बदलने के लिए बिना इस float
स्ट्रीम सकता है,?
यह मेरे लिए एक स्वीकार्य समाधान है। धन्यवाद। –