1 - 用上下文属性将c++对象嵌入QML对象(上)

Embedding C++ Objects into QML with Context Properties

在将QML对象加载到c++应用程序中时,可以直接嵌入一些可以在QML代码中使用的c++数据。例如,这使得在嵌入式对象上调用c++方法成为可能,或者使用c++对象实例作为QML视图的数据模型。

将c++数据注入QML对象的能力由QQmlContext类实现。该类将数据公开到QML对象的上下文中,以便可以在QML代码的范围内直接引用数据。

Setting a Simple Context Property

例如,下面是一个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

标签:对象   范围内   上下文   表达式   下文   文中   应用程序   属性   加载   代码   数据   求值

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top