专栏首页跟Qt君学编程QML教程-属性绑定与赋值

QML教程-属性绑定与赋值

写QML界面会经常使用到很多的属性,其中属性的绑定与解绑尤其重要,决定着该界面属性是否能动态更新的功能。本文介绍属性的绑定与非绑定特性。

1.属性绑定

  • 使用 :操作符,作用是左值绑定右值。
  • 例:
Item {
 property color myColor: "white"
 ...
 Rectangle {
        color: myColor
 ...
 }
}
  • color绑定父控件 myColor属性。

2.属性非绑定(解除绑定)

  • 使用 =操作符,作用是左值解除右值绑定
  • 例:
Item {
 property color myColor: "white"
 ...
 Rectangle {
        color: myColor
 ...
 Component.onCompleted: color = "blue"
 }
}
  • color="blue"被执行时会解除 color:myColor的绑定

3.属性重新绑定

  • 使用 Binding控件对已经解除绑定的属性重新绑定。
  • 例:
Item {
 property color myColor: "white"
 ...
 Rectangle {
        color: myColor
 ...
 Component.onCompleted: color = "blue"
 }
 Binding {
        target: rect
 property: "color"
        value: root.myColor
 }
}
  • target为被绑定(左值)的id;
  • property为被绑定(左值)的属性,注意类型为字符串;
  • value为绑定(右值)的属性。

4.类比原理

  • 绑定原理相当于C++的引用或指针。
  • 非绑定原来相当于C++的赋值,将值复制一份。

5.什么情况下使用绑定与非绑定?

  • 使用绑定特性会导致不同对象的属性之间存在依赖关系,对界面动态刷新会有影响。
  • 比如:翻译刷新问题。 如果翻译字段被绑定了,那么翻译字段刷新将会更新所有的文字,这样会导致界面的突然卡顿(如果翻译字段过多)。这时候建议是解除绑定可以降低界面的突然卡顿。
  • 绑定容易影响性能,但刷新界面方便
  • 非绑定虽然要做些额外的工作(赋值)但可以降低对界面的刷新,特别是图表类。

本文分享自微信公众号 - Qt君(qtjuna),作者:Prosa

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 兼容Qt4/Qt5版本Qml控件RoundRectangle

    Qt君
  • Qt读取UTF8与GBK格式文件乱码问题

    Qt君
  • 资讯 | Qt 5.15中的新功能

      为了帮助准备过渡到Qt 6,在Qt 5.15版本中已将许多将从Qt 6.0中删除的类和成员函数标记为已弃用。除非您在项目中定义QT_NO_DEPRECATE...

    Qt君
  • Mac开发之 Cocoa 绑定 入门

    从iOS开发转为Mac OSX应用开发的过程中,cocoa 绑定算是比较大的一个差异,也是OSX上比较实用的技术,cocoa 绑定让开发者节省了大量的代码,可以...

    代码行者
  • SpringMVC:数据绑定入门(-)

    1.数据类型,可以绑定基本数据类型,如int age,或者包装类型如:Integer age;

    Dar_Alpha
  • 2019-2-13-wcf入门(15)

    绑定是用于配置wcf如何进行endpoint的对象,其包括协议配置(如2019-2-12-wcf入门(14) - huangtengxiao用到的可靠会话配置)...

    黄腾霄
  • 理解静态绑定与动态绑定

    一个Java 程序要经过编写、编译、运行三个步骤,其中编写代码不在我们讨论的范围之内,那么我们的重点自然就放在了编译 和 运行这两个阶段,由于编译和运行阶段过程...

    cxuan
  • WCF系统内置绑定列表与系统绑定所支持的功能

    莫问今朝
  • WPF 笔刷绑定不上可能的原因

    在 WPF 中如背景色等都是使用笔刷,在使用绑定的时候可能绑定不上,本文告诉大家绑定不上可能的原因和调试方法

    林德熙
  • WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了

    如果你写了一个 MarkupExtension 在 XAML 当中使用,你会发现你在 MarkupExtension 中定时的属性是无法使用 XA...

    walterlv

扫码关注云+社区

领取腾讯云代金券