QT/QML: получение ReferenceError: <Object> не определен внутри Component.OnCompleted
Я устанавливаю свойство контекста «CallBackAPI», которое имеет две функции: ведение журнала и OnButtonClicked. Он отлично работает, когда я просто использую CallBackAPI внутри MouseArea, OnClicked Events.
Но если CallBackAPI используется внутри Component.OnCompleted, он дает ReferenceError: CallBackAPI не определен
Я не знаю, почему CallBackAPI доступен для событий MouseArea и OnClicked, а не в Component.OnCompleted
Я не уверен, что здесь отсутствует. Может ли кто-нибудь помочь?
main.cpp
CallBackAPIInstance = new CallBackAPI();
QQuickView* view = new QQuickView();
view->setObjectName("TestObject");
QQmlContext* context = view->rootContext();
view->setSource(QUrl::fromLocalFile(strQmlPath));
context->setContextProperty("CallBackAPI", CallBackAPIInstance);
QWidget* container = QWidget::createWindowContainer(view, getWidget());
container->setObjectName(QString("MyWidgetObject"));
container->raise();
CallBackAPI.h
class CallBackAPI: public QObject
{
Q_OBJECT
public:
CallBackAPI();
virtual ~CallBackAPI();
public slots:
Q_INVOKABLE void onButtonClick(const QString& qmlParentName, const QString& objectName, const bool&);
Q_INVOKABLE void logging(const int& messageLogLevel, const QString& message);
};
Код QML
import QtQuick 2.15
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.0
import QtQuick.Window 2.2
import QtCharts 2.0
Item{
id: root
width: 780
height: 480
Rectangle {
id: footer1
x: 0
y: 421
width: 780
height: 59
color: "#c2bba7"
Button {
id: resetButton
x: 50
y: 1
width: 150
height: 50
text: "Reset"
font.pixelSize: 18
objectName: "resetButton"
onClicked: {
CallBackAPI.onButtonClick(HandleName, objectName,false)
}
Component.onCompleted: {
CallBackAPI.logging(LOG_DEBUG, "TestCompleted");
}
}
Button {
id: saveButton
x: 600
y: 1
width: 150
height: 50
text: "Save"
font.pixelSize: 18
objectName: "saveButton"
onClicked: {
CallBackAPI.onButtonClick(HandleName, objectName,false)
}
Component.onCompleted: {
CallBackAPI.logging(LOG_DEBUG, "TestCompleted");
}
}
}
}