2012-05-19 31 views
6

Tôi có một main.qml với một MainPage.qml chèn qua:QML C++ Tìm Child

initialPage: MainPage {tools: toolBarLayout} 

vì tôi chọn để làm cho nó cho Symbian. Khi tôi cố gắng:

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

thông điệp không đi qua nhưng không có lỗi, tôi cũng đã cố gắng kết nối với một tín hiệu đến một SLOT trên Mainpage với "if (Mainpage)" nhưng nó cũng không có phản ứng . Tôi đã cố gắng để có được một tín hiệu thông qua để chính mặc dù nhưng khi tôi cố gắng:

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

Chức năng không bao giờ được thực thi bởi vì tôi không nhận được một tin nhắn từ console.log ở tất cả không giống như tôi làm khi các chức năng trên chính chạy. Tôi cũng biết các phương pháp khác đã không làm việc vì cũng không đăng nhập một tin nhắn hoặc thực hiện phần còn lại của chức năng của họ.

Tôi nghĩ rằng sự cố có thể nằm trong MainPage không được tạo dưới dạng phần tử có id. Bạn có biết những gì có thể gây ra điều này?

Trả lời

8

findChild không tìm id nhưng objectName tài sản mà bạn chỉ có thể thêm bên trong đối tượng MainPage (xem documentation):

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

Bạn cũng có thể truy cập vào đối tượng mà thông qua initialPage tài sản của rootObject mà không cần thêm một tài sản objectName:

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

Cảm ơn, tôi nghĩ rằng nó đã tìm id, sau khi tôi thêm đối tượng ev erything làm việc tốt. – Gerharddc