2012-05-19 13 views
6

खोजें मैं एक MainPage.qml के साथ एक main.qml है के माध्यम से डाला:Qml सी ++ बाल

initialPage: MainPage {tools: toolBarLayout} 

क्योंकि मैं सिम्बियन के लिए इसे बनाने के लिए चुनें। जब मैं कोशिश:

QObject *mainPage = rootObject->findChild<QObject*>("MainPage"); 
if (mainPage) 
    QDeclarativeProperty(mainPage, "toets").write(3); 

संदेश के माध्यम से नहीं आती है लेकिन कोई त्रुटि नहीं है, मैं भी साथ mainpage पर एक स्लॉट के लिए एक संकेत को जोड़ने की कोशिश की है "अगर (mainpage)" लेकिन यह भी कोई जवाब नहीं है । मैं हालांकि मुख्य करने के लिए के माध्यम से एक संकेत पाने में कामयाब रहे है लेकिन जब मैं कोशिश:

function changeNum(num) 
{ 
    MainPage.changeNum(num) 
} 

समारोह कभी नहीं निष्पादित हो जाता है, क्योंकि मैं बिल्कुल विपरीत मैं क्या console.log से एक संदेश नहीं मिलता है जब मुख्य पर समारोह रन। मुझे यह भी पता है कि अन्य विधियां काम नहीं करतीं क्योंकि उन्होंने संदेश को लॉग नहीं किया है या उनके बाकी फ़ंक्शन को निष्पादित नहीं किया है।

मुझे लगता है कि समस्या मुख्य पृष्ठ में किसी आईडी के साथ तत्व के रूप में नहीं बनाई जा सकती है। क्या आप जानते हैं कि इसका क्या कारण हो सकता है?

उत्तर

8

findChildid लेकिन objectName संपत्ति जो आप बस MainPage ऑब्जेक्ट के अंदर जोड़ सकते हैं (documentation देखें) के लिए नहीं लगता है:

initialPage: MainPage { 
    objectName: "MainPage"  
    tools: toolBarLayout 
} 

तुम भी की initialPage संपत्ति के माध्यम से उस वस्तु का उपयोग कर सकता है आवश्यकता के बिना rootObject एक objectName संपत्ति जोड़ने के लिए:

QObject * mainPage = QDeclarativeProperty(rootObject, "initialPage").object(); 
if (mainPage) 
    QDeclarativeProperty(mainPage, "toets").write(3); 
+1

धन्यवाद, मैंने सोचा कि यह आईडी के लिए देखा, के बाद मैं objectname EV जोड़ा erything ठीक काम किया। – Gerharddc