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的元素.你知道这可能导致什么吗?
findChild
不寻找id
但objectName
你可以简单地添加到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)