के बीच संचार यह page दिखाता है कि क्यूएमएल के भीतर से सी ++ कार्यों को कैसे कॉल करें।सी ++ और क्यूएमएल
मैं जो करना चाहता हूं वह एक सी ++ फ़ंक्शन के माध्यम से एक बटन पर छवि को बदलना है (राज्य परिवर्तन को ट्रिगर करें या फिर यह किया गया है)।
मैं इसे कैसे प्राप्त कर सकता हूं?
अद्यतन
मैं रेडॉन द्वारा दृष्टिकोण की कोशिश की, लेकिन तुरंत जब मैं इस लाइन डालने:
QObject *test = dynamic_cast<QObject *>(viewer.rootObject());
संकलक इस तरह की शिकायत है:
error: cannot dynamic_cast '((QMLCppBinder*)this)->QMLCppBinder::viewer.QDeclarativeView::rootObject()' (of type 'struct QGraphicsObject*') to type 'class QObject*' (source is a pointer to incomplete type)
मामले में यह प्रासंगिक है , QMLCppBinder एक ऐसा वर्ग है जिसे मैं कई QML पृष्ठों से C++ कोड में कनेक्शन को समाहित करने के लिए निर्माण करने का प्रयास करता हूं। जो अपेक्षाकृत एक से अधिक कठिन लगता है। आप सी में QDeclarativeView पर एक संदर्भ संपत्ति के रूप में अपने सी ++ वस्तु सेट कर सकते हैं,
class QMLCppBinder : public QObject
{
Q_OBJECT
public:
QDeclarativeView viewer;
QMLCppBinder() {
viewer.setSource(QUrl("qml/Connect/main.qml"));
viewer.showFullScreen();
// ERROR
QObject *test = dynamic_cast<QObject *>(viewer.rootObject());
}
}
"त्रुटि: गतिशील_कास्ट नहीं हो सकता है" शायद किसी अनुपस्थित हेडर के कारण "# शामिल" शामिल है यदि कोई इस पर आता है। –
Andrew