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

0 ответов

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