6

我有一个带有 MainPage.qml 的 main.qml 通过以下方式插入:

initialPage: MainPage {tools: toolBarLayout}

因为我选择为 Symbian 制作它。当我尝试:

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

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

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

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

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

4

1 回答 1

9

findChild不寻找idobjectName您可以简单地添加到MainPage对象中的属性(请参阅文档):

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

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

QObject * mainPage = QDeclarativeProperty(rootObject, "initialPage").object();
if (mainPage)
     QDeclarativeProperty(mainPage, "toets").write(3);
于 2012-05-19T23:09:27.350 回答