Вложение объектов C ++ в QML с помощью свойств контекста

Согласно документации Qt5: методы раскрытия, включая слоты qt, все общедоступные слоты классов C ++, которые наследуются от QObject, доступны из QML. Вот что я сделал:

C ++

class MyClass : public QObject
{
    Q_OBJECT

public slots:
    void doStuffFromQmlSlot()
    {
        qDebug() << Q_FUNC_INFO;
    }

public:
    MyClass()
    {
        qDebug() << Q_FUNC_INFO;
    }
};
[d4 ] my C ++ содержит:

MyClass myClass;
QQmlEngine engine;
engine.rootContext()->setContextProperty( "myclass", &myClass );
QQmlComponent component( &engine, QUrl::fromLocalFile("qml/qtquick-01/main.qml") );
component.create();

QML

import QtQuick 2.0

Rectangle {
    width: 360
    height: 360
    Text {
        text: qsTr("Hello World")
        anchors.centerIn: parent
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            myclass.doStuffFromQmlSlot();

            Qt.quit();
        }
    }
}

На самом деле QtCreator, по-видимому, распознает открытый объект QML в QML, поскольку он включает автозаполнение имени класса (myclass) и общедоступного слота doStuffFromQmlSlot (). Когда я запускаю приложение, я, к сожалению, получил следующую ошибку:

ReferenceError: myclass не определен

Любая подсказка о том, что я делаю неправильно?

1
задан 25 April 2014 в 19:59

0 ответов

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

Похожие вопросы: