Qt - Как запустить функцию C ++ при нажатии кнопки QML? Использование QQmlApplicationEngine

myclass.h

#ifndef MYCLASS_H
#define MYCLASS_H

#include <QDebug>
#include <QObject>

class MyClass : public QObject
{
public:
    MyClass();

public slots:
    void buttonClicked();
    void buttonClicked(QString &in);
};

#endif // MYCLASS_H

myclass.cpp

#include "myclass.h"

MyClass::MyClass()
{
}

void MyClass::buttonClicked()
{
    // Do Something
}

void MyClass::buttonClicked(QString &in)
{
    qDebug() << in;
}

main.cpp

#include <QApplication>
#include <QQmlApplicationEngine>
#include <myclass.h>
#include <QQmlContext>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:///main.qml")));

    MyClass myClass;  // A class containing my functions

    // Trying to "SetContextProperty" as I saw people do it to achieve C++/QML connection
    QQmlContext * context = new QQmlContext(engine.rootContext());
    context->setContextProperty("_myClass", &myClass);

    return app.exec();
}

Я хочу использовать функцию вмои занятия класс, который принимает параметр QString при нажатии кнопки QML.

Когда я компилирую и запускаю .. все идет гладко. Но когда я нажимаю на кнопку .. она показывает эту ошибку в отладчике:

qrc: ///main.qml: 80: ReferenceError: _myClass не определен

~> «Строка 80 в моем файле QML»:

74:    MouseArea {
75:        id: mouseArea1
76:        anchors.fill: parent
77:        hoverEnabled: true;
78:        onEntered: { rectangle1.border.width = 2 }
79:        onExited: { rectangle1.border.width = 1 }
80:        onClicked: _myClass.buttonClicked("Worked?")
81:    }

РЕДАКТИРОВАТЬ: (Что касается ошибки, вызванной ошибкой компиляции)

Как@Jairo Предполагается, что все классы должны быть унаследованы от QObject.

Все еще ищу решение моей главной проблемы.

Ответы на вопрос(1)

Ваш ответ на вопрос