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