QQmlContext: setContextProperty не работает при использовании в Component.OnCompleted

Я устанавливаю свойство контекста «CallBackAPI», которое имеет две функции: ведение журнала и OnButtonClicked.

Он отлично работает при использовании в MouseArea, OnClicked Events. Но CallBackAPI используется внутри Component.OnCompleted, он дает ReferenceError: CallBackManager не определен

Я не уверен, что здесь отсутствует. Может ли кто-нибудь помочь?

Код C ++

              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();

Код 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");
            }
        }
    }
}

0 ответов

Другие вопросы по тегам