我想在创建对象完成时发出信号。像这样:访问深层次的QML信号
Component.onCompleted: mySignal()
这是位于层次结构深处的QML文件。我现在看到两种用C++访问这个信号的解决方案。
首先是传递信号了层次结构,直到main.qml,然后在C++中做到这一点:
//Create a Quick View object.
QQuickView *view = new QQuickView();
//Object to access QML properties and childs.
QObject *container = (QObject *) view->rootObject();
//Connect signal and slots
QObject::connect(container, SIGNAL(mySignal()), this, SLOT(onMySignal()));
这我都试过,由于某种原因插槽不叫。它适用于我从main.qml发送和发出的所有其他信号,但不适用于从Component.onComplete发出的信号。我可以验证信号是从QML端发出的,但从未在C++端收到。
我尝试的第二件事情是将信号传递给main.qml,而不是将信号传递给发出我想要的信号的QML文件。我试过这样做:
//Create a Quick View object.
QQuickView *view = new QQuickView();
//Object to access QML properties and childs.
QObject *container = (QObject *) view->rootObject();
//Connect signal and slots
QObject::connect(container->findChild<QObject*>("mySignalQmlFile"), SIGNAL(mySignal()), this, SLOT(onMySignal()));
其中mySignalQmlFile是在其中定义了信号的主矩形的ID。
,我得到的错误:
的QObject ::连接:没有这样的信号QQuickRectangle_QML_54 :: mySignal()在.. \ GC \ mainwindow.cpp:62
我现在不知道如何继续。