Russian Qt Forum

Qt => Qt Quick => Тема начата: Larry от Декабрь 28, 2015, 13:19



Название: [РЕШЕНО]Регистрация своего типа в Qml
Отправлено: Larry от Декабрь 28, 2015, 13:19
Добрый день.
Возникла проблема с регистрацией своего типа в Qml. Что может быть?
Выдает ошибку: qrc:/main.qml:3 module "ModuleName" is not installed

Вот main.cpp:
Код:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtQml>
#include "testclass.h"
//------------------------------
int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

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

    qmlRegisterType<TestClass>("ModuleName", 1, 0, "TypeName");

    return app.exec();
}

main.qml:
Код:
import QtQuick 2.5
import QtQuick.Controls 1.4
import ModuleName 1.0

ApplicationWindow
{
    visible: true
    width: 640
    height: 480
    title: qsTr("Integration C++ whith Qml")

    Rectangle
    {
        width: 360
        height: 360

        TypeName
        {
            id: type
            someProperty: 10
        }

        Text
        {
            text: "My property is: " + myObj.someProperty
            anchors.centerIn: parent
        }

        MouseArea
        {
            anchors.fill: parent
            onClicked:
            {
                Qt.quit();
            }
        }
    }
}

пример брал с хабра, но так и не получилось...При этом импорт не подчеркивает и видит свойство someProperty и сам класс.


Название: Re: Регистрация своего типа в Qml
Отправлено: gil9red от Декабрь 28, 2015, 13:41
Цитировать
Теперь должны зарегистрировать наш класс в QML, для этого нам нужно вызвать в конструкторе QmlApplicationViewer, который создается QtCreator автоматически при создании нового QtQuick проекта, добавить вызов шаблонной функции qmlRegisterTypes.

И вообще, я бы попробовал сначала зарегистрировать тип, а уже потом загружать qml


Название: Re: Регистрация своего типа в Qml
Отправлено: Larry от Декабрь 28, 2015, 14:01
Да, это помогло. Спасибо большое...пропустил это...