Russian Qt Forum
Ноябрь 01, 2024, 23:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Регистрация своего типа в Qml  (Прочитано 5131 раз)
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 и сам класс.
« Последнее редактирование: Декабрь 28, 2015, 14:02 от Larry » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Декабрь 28, 2015, 13:41 »

Цитировать
Теперь должны зарегистрировать наш класс в QML, для этого нам нужно вызвать в конструкторе QmlApplicationViewer, который создается QtCreator автоматически при создании нового QtQuick проекта, добавить вызов шаблонной функции qmlRegisterTypes.

И вообще, я бы попробовал сначала зарегистрировать тип, а уже потом загружать qml
« Последнее редактирование: Декабрь 28, 2015, 13:44 от gil9red » Записан

Larry
Гость
« Ответ #2 : Декабрь 28, 2015, 14:01 »

Да, это помогло. Спасибо большое...пропустил это...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.107 секунд. Запросов: 23.