Qml C ++ Find Child

时间:2012-05-19 19:48:27

标签: c++ qt qml signals-slots

我有一个main.qml,其中插入了MainPage.qml:

initialPage: MainPage {tools: toolBarLayout}

因为我选择使用Symbian。当我尝试:

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

消息未通过,但没有错误,我也尝试使用“if(mainPage)”将SIGNAL连接到MainPage上的SLOT,但它也没有响应。我已经设法通过主要信号,但是当我尝试时:

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

该函数永远不会执行,因为我没有收到来自console.log的消息,这与我在main运行时的函数不同。我也知道其他方法不起作用,因为它也没有记录消息或执行其余的功能。

我认为问题可能在于MainPage没有被创建为具有id的元素。你知道这可能导致什么吗?

1 个答案:

答案 0 :(得分:8)

findChild不会查找id,而是objectName属性,您只需在MainPage对象中添加该属性(请参阅documentation):

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

您还可以通过initialPage的{​​{1}}属性访问该对象,而无需添加rootObject属性:

objectName