2012-05-19 27 views
6

我有一個MainPage.qml一個main.qml插通:設爲Qml C++尋子

initialPage: MainPage {tools: toolBarLayout} 

,因爲我選擇,使其爲Symbian。當我嘗試:

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

消息不來通過,但沒有任何錯誤,我自己也嘗試在一個的MainPage信號連接到SLOT用「如果(炫魅)」,但它也沒有響應。我設法通過得到一個信號,雖然主但當我嘗試:

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

永遠不會,因爲我不從的console.log得到一個消息,都不像我做執行的功能時,在主要功能運行。我也知道其他方法不起作用,因爲它也沒有記錄消息或執行其他功能。

我認爲這個問題可能在於MainPage沒有被創建爲一個帶有id的元素。你知道這可能是什麼原因嗎?

回答

8

findChild不去找idobjectName屬性,它可以簡單的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

謝謝,我認爲它看起來的ID,之後我加入了對象名EV一切工作正常。 – Gerharddc