Всем привет. Возникла такая проблема. При попытке объявить объект в

qml прога крашится вообще без ничего.
С++ код:
static QObject* QmlGlobalSingletonFactory(QQmlEngine*, QJSEngine*)
{
// We create this object as a QGCTool even though it isn't in the toolbox
Application* qrcApp = Application::getAppInstance();
QMLGlobal* qmlGlobal = new QMLGlobal(qrcApp, qrcApp->getToolbox());
qmlGlobal->setToolbox(qrcApp->getToolbox());

return qmlGlobal;
}


void Application::initStaticMembers()
{
qml_global = new QMLGlobal(this, _toolbox);

qml_global->setToolbox(_toolbox);

qmlRegisterSingletonType<QMLGlobal>("NimbusControls", 1, 0, "QMLGlobal", QmlGlobalSingletonFactory);
}
Здесь метод initStatiсMembers вызывается из main cpp.

в qml объявляется следующий код:
property var something: QMLGlobal.something

something у qmlGlobal задан как QProperty.

В чем может быть проблема? если данных слишком мало, то предоставлю еще

6 ответов

8 просмотров

зарегистрирован в QML Engine?

Валентин- Автор вопроса
Илья 🐊
зарегистрирован в QML Engine?

я не понял вопроса. но ведь register и делает, что регистрирует тип в qml

Делал подобное. У тебя просто объект уничтожается сборщиком мусора. Чтоб не было такого: static QObject* QmlGlobalSingletonFactory(QQmlEngine *engine, QJSEngine*) { // We create this object as a QGCTool even though it isn't in the toolbox Application* qrcApp = Application::getAppInstance(); QMLGlobal* qmlGlobal = new QMLGlobal(qrcApp, qrcApp->getToolbox()); qmlGlobal->setToolbox(qrcApp->getToolbox()); return qmlGlobal; }

Делал подобное. У тебя просто объект уничтожается сборщиком мусора. Чтоб не было такого: static QObject* QmlGlobalSingletonFactory(QQmlEngine *engine, QJSEngine*) { // We create this object as a QGCTool even though it isn't in the toolbox Application* qrcApp = Application::getAppInstance(); QMLGlobal* qmlGlobal = new QMLGlobal(qrcApp, qrcApp->getToolbox()); qmlGlobal->setToolbox(qrcApp->getToolbox()); engine->setObjectOwnership(qmlGlobal, QQmlEngine::CppOwnership); return qmlGlobal; }

Валентин- Автор вопроса

нет, не помогло. Однако выводом в консоль выяснилось, что прога валится на момент engine.load()

Валентин
нет, не помогло. Однако выводом в консоль выяснило...

У меня примерно так: // cpp template<typename T> QObject *qmlSingletonInterface(QQmlEngine *engine, QJSEngine *scriptEngine) { Q_UNUSED(scriptEngine) T *p = &T::instance(); engine->setObjectOwnership(p, QQmlEngine::CppOwnership); return p; } int main(int argc, char *argv[]) { qmlRegisterSingletonType<MyClass>("MyClass", 1, 0, "MyClass", qmlSingletonInterface<MyClass>); } // qml import MyClass 1.0 title: MyClass.myVal

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

Обсуждают сегодня

Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Всем привет, может уже кто-то пытался выдернуть из api информацию о дате рождения пользователя Есть ли вообще такая возможность?
Artem Stormageddon
2
Приветствую всех, возникла проблема, до этого писал бота в простом формате где при выполнении условий приходило через send_message информация, сейчас решил добавить хендлер на...
Andrew
4
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Можно ли отследить отправление местоположения именно по кнопке, чтобы 100% отправлялось текущее, а не любое выбранное?
Lencore
2
Ребят, привет. У кого-то есть опыт заказа мерча в сторе? Есть успешные кейсы? Чёт у меня турецкую карту не принимает
Vladimir F.
7
Ребят, привет. А эти формы как отправлять? У меня на странице контактов форма, мне нужно ее на почту к себе скидывать. Я уже не не помню где и как это делалось? Может кто-нибу...
Atid Kitdeveloper.ru
2
Карта сайта