2012-05-19 10 views
6

Tengo un main.qml con un MainPage.qml insertado a través de:QML C++ Child Find

initialPage: MainPage {tools: toolBarLayout} 

porque quiero que sea para Symbian. Cuando intento:

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

el mensaje no viene a través, pero no hay errores, también he tratado de conectar una señal a una ranura en MainPage con el "si (MainPage)" pero también tiene ninguna respuesta . He conseguido una señal a través de principal, aunque pero cuando intento:

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

La función nunca se ejecutó porque no me sale un mensaje de console.log muy distinto de lo que hago cuando la función principal de carreras. También sé que los otros métodos no funcionaron porque tampoco registraron un mensaje ni ejecutaron el resto de su función.

Creo que el problema podría estar en que MainPage no se haya creado como un elemento con una identificación. ¿Sabes lo que podría estar causando esto?

Respuesta

8

findChild no buscar la id pero la propiedad objectName el que simplemente puede añadir el interior del objeto MainPage (ver la documentation):

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

También se puede acceder a ese objeto a través de la propiedad de la initialPagerootObject sin la necesidad de añadir una propiedad objectName:

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

Gracias, me pareció que estaba para la identificación, después de añadir la ev objectname Todo funcionó bien. – Gerharddc