我想在創建對象完成時發出信號。像這樣:訪問深層次的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
我現在不知道如何繼續。