Qml C++找到孩子

Qml C++ Find Child

本文关键字:孩子 C++ Qml      更新时间:2023-10-16

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

initialPage: MainPage {tools: toolBarLayout}

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

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

消息没有通过,但没有错误,我也尝试使用"if(主页("将 SIGNAL 连接到主页上的插槽,但它也没有响应。我已经设法将信号传递到main,但是当我尝试时:

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

该函数永远不会被执行,因为我没有从控制台收到消息.log这与主函数运行时的情况完全不同。我也知道其他方法不起作用,因为也没有记录消息或执行其其余功能。

我认为问题可能出在主页未创建为具有 id 的元素。你知道是什么原因造成的吗?

>findChild不查找id而是查找objectName属性,您可以简单地将其添加到MainPage对象中(请参阅文档(:

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

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

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