Qml C++ Find Child

Ger*_*ddc 6 c++ qt signals-slots qml

我有一个Main.qml插入MainPage.qml:

initialPage: MainPage {tools: toolBarLayout}
Run Code Online (Sandbox Code Playgroud)

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

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

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

function changeNum(num)
{
     MainPage.changeNum(num)
}
Run Code Online (Sandbox Code Playgroud)

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

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

ale*_*sdm 9

findChild不寻找idobjectName你可以简单地添加到MainPage对象内的属性(参见文档):

initialPage: MainPage {
    objectName: "MainPage"      
    tools: toolBarLayout
}
Run Code Online (Sandbox Code Playgroud)

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

QObject * mainPage = QDeclarativeProperty(rootObject, "initialPage").object();
if (mainPage)
     QDeclarativeProperty(mainPage, "toets").write(3);
Run Code Online (Sandbox Code Playgroud)