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.
В чем может быть проблема? если данных слишком мало, то предоставлю еще
зарегистрирован в 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
Обсуждают сегодня