在将QML对象加载到c++应用程序中时,可以直接嵌入一些可以在QML代码中使用的c++数据。例如,这使得在嵌入式对象上调用c++方法成为可能,或者使用c++对象实例作为QML视图的数据模型。
将c++数据注入QML对象的能力由QQmlContext类实现。该类将数据公开到QML对象的上下文中,以便可以在QML代码的范围内直接引用数据。
例如,下面是一个QML项,它引用了当前范围中不存在的currentDateTime值:
//MyItem.qml
import QtQuick
Text{
text: currentDateTime
}
这个currentDateTime值可以由加载QML组件的c++应用程序直接设置,使用QQmlContext::setContextProperty():
#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQuickView view;
view.rootContext()->setContextProperty("currentDateTime", QDateTime::currentDateTime());
view.setSource(QUrl::fromLocalFile("E:/QMLWorkspace/ContextProperties/MyItem.qml"));
view.show();
return app.exec();
}
提示:由于在QML中求值的所有表达式都是在特定上下文中求值的,如果上下文被修改,则该上下文中的所有绑定都将重新求值。因此,在应用程序初始化之外应该小心使用上下文属性,因为这可能会导致应用程序性能下降。
运行结果:
页面更新:2024-05-30
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号