如何将全局字符串和整数公开给C ++,QML和JS

时间:2017-01-27 18:44:13

标签: qt qml qtquick2

我们的团队正在开发一个使用C ++,QML和JS的Qt应用程序。公开非语言特定字符串的最佳方式是什么,表示文件名和代表错误代码的int,以便所有语言都可以轻松使用它们?

1 个答案:

答案 0 :(得分:1)

最有效和最干净的解决方案是将这些字符串和整数实现为QObject的属性,然后在main.cpp中创建该对象的实例并将其注册为单例。

// before main()
YourType data;
static QObject * getData(QQmlEngine * e, QJSEngine *) {
  e->setObjectOwnership(&data, QQmlEngine::CppOwnership); // just in case
  return &data;
}


// in main()
qmlRegisterSingletonType<YourType>("Core", 1, 0, "Data", getData);
QQmlApplicationEngine engine;
//...

现在你有了C ++的全局data和QML的全局Data。在第一种情况下,您需要在需要访问它的来源中将data声明为extern,在第二种情况下,您需要import Core 1.0才能访问Data和它的属性。