在Qt/QML应用程序中(此代码通常驻留在main.cppQtCreator项目中),以下将C++类暴露给QML的方法有何不同:
qmlRegisterType<UePeopleModel>("com.example",
1,
0,
"UePeopleModel");
Run Code Online (Sandbox Code Playgroud)
和
engine.rootContext()->setContextProperty("uePeopleModel",
uePeopleModel);
Run Code Online (Sandbox Code Playgroud)
?
Ank*_*kur 12
qmlRegisterType:
"有时,QObject派生类可能需要在QML类型系统中注册,但不能作为可实例化类型注册."
如果要在一个或多个具有不同属性的qml文件中重用QObject派生类,请使用qmlRegisterType.QML负责初始化该寄存器类.
有关更多帮助,请参阅此 从C++定义QML类型
setContextProperty:
使用setContextProperty,如果要使用单个全局类来访问QML或从QML访问.这里您需要在使用setContextProperty()之前创建此类对象.
注意:由于在QML中计算的所有表达式都是在特定上下文中计算的,因此如果修改了上下文,则将重新评估该上下文中的所有绑定.因此,应在应用程序初始化之外小心使用上下文属性,因为这可能会导致应用程序性能下降.
有关更多帮助,请参阅此 将C++对象嵌入到QML中
| 归档时间: |
|
| 查看次数: |
5411 次 |
| 最近记录: |