在Qt Quick中一个简单Hello World加载过程

Qt5基本类图:




QQmlEngine
    QQmlEngine类提供了一个QML引擎,用于管理由QML文档定义的对象层次架构,QML提供了一个默认的QML上下文(根上下文,获取函数QQmlEngine::rootContext())。该上下文是QML表达式的执行环境,并且保证在使用时对象属性能够被正确更新。
    QQmlEngine可以将 全局设置应用到其管理下的所有QML对象,比如网络通信:QNetworkAccessManager、全局永久(整个程序生命周期)存储的文件路径(资源预加载)等

QQmlContext
    QQmlContext提供了对象实例化和表达式执行所需要的上下文环境。所有的QML对象都要在特定的上下文中实例化,所有的表达式都要在特定的上下文中执行。上下文以 根上下文为主组成层次结构, 上下文继承 上下文的属性,修改子上下文的属性值可以覆盖父上下文的属性值。
    QQmlContext::setContextProperty()能够通过名字将数据显示绑定到上下文,定义、更新上下文的属性
【注意】使用 QQmlContext::setContextProperty()显示设置对象的属性会优先于上下文对象的属性

QQmlComponent
    QML文档定义的对象类型可以在运行时使用QQmlComponent类进行 实例化,QQmlComponent封装了QML组件(component)的定义,可以用于加载QML文档,前提条件是需要QQmlEngine实例化QML文档中定义的对象层次结构。
    QQmlComponent实例既可以使用C++直接创建,也可以通过Qt.createComponent()函数在QML代码中创建

QQmlExpression
    动态执行表达式QQmlExpression允许客户端,在C++中利用一个特定的QML上下文执行JavaScript表达式,表达式执行的结果以QVariant的形式返回,并且遵守QML引擎确定的转换规则。


加载过程
每一个,Qt Quick函数都必须要有 唯一 一个QQmlEngine引擎用于加载QML文件, 唯一 一个QQmlContext用于QML对象实例化和表达式执行的上下文环境, 一个QQmlComponent组件用于实例化第一个QML对象。一般QML加载方式有两种。

1、QGuiApplication + QQmlApplicationEngine + Window
我们在Qt Creator新建一个Qt Quick的hello world工程都是默认使用这种方式加载的。由上图的继承关系可以看出,
QGuiApplication:会调用父类的轮询函数  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值