当前位置: 首页 > article >正文

QQuick-Binding的介绍

QQuick-Binding的介绍

Binding的概述

  1. 属性绑定:在qml中两个对象的属性和属性之间可以形成依赖,直接属性绑定 如 width: parent.width; 即 对象宽度 与父对象的宽度进行绑定;除了默认的属性绑定,还可以通过Bingding对象建立显示的属性绑定

  2. Binding 用于对象之间的属性绑定;即可以用于 直接的属性绑定; 也可以用于满足条件的属性绑定,即绑定的目标需在满足条件时才会使用绑定的属性值。

  3. 属性property : string:要绑定的属性名称,即要更新的属性

  4. 属性target : QtObject:要绑定的对象,即要更新的对象

  5. 属性value : var: 给绑定对象的属性要设置的值

  6. 属性when : bool: 绑定生效的判断条件,当值为true 时,绑定才生效。

Binding的实例代码

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts

//属性绑定:在qml中两个对象的属性和属性之间可以形成依赖,直接属性绑定 如  width: parent.width; 即 对象宽度 与父对象的宽度进行绑定
//除了默认的属性绑定,还可以通过Bingding对象建立显示的属性绑定
//Binding 用于对象之间的属性绑定; 即可以用于 直接的属性绑定,也可以用于满足条件的修改属性值,不满足条件保持原值

Item {
    id: idTabBarRoot
    Rectangle{
        id:rec1
        x:0
        y:0
        width:  100
        color: "red"
        height: 40

        PropertyAnimation{
            id: ana
            target: rec1
            duration: 2000
            running: false
            loops: 1
            property: "width"
            from:100
            to:200

            onRunningChanged: {
                console.log("running changed",running);
            }
        }
        MouseArea{
            anchors.fill: parent
            onClicked: {
                console.log("clicked");
                ana.running = true;
            }
        }
    }
    Rectangle{
        id: rec2
        y:50
        width: rec1.width                       //隐形的属性绑定,即 rec2.width 跟随 rec1.width 变化
        color:"blue"
        height: 40
    }

    Rectangle{
        id: rec3
        y:100
        color:"green"
        height: 40
        width: 100
        // Binding{
        //     rec3.width: rec1.width
        // }
        //显示指明一个绑定
        Binding{
            target: rec3
            property: "width"
            value: rec1.width;
            when: rec1.width > 150              //当满足条件时,value 才与 rec1.width值进行绑定
        }
    }


    Rectangle{
        id: rec4
        y:150
        color:"yellow"
        height: 40
        width: 100

        //当鼠标释放,值为200
        Binding on width{
            when:mouse1.pressed             //当鼠标按下,宽度变为200
            value: 200
        }
        MouseArea{
            id:mouse1
            anchors.fill: parent
        }
    }
}

运行效果

在这里插入图片描述


http://www.kler.cn/a/584283.html

相关文章:

  • e2studio开发RA4L1(1)---开发板测试
  • 【Linux】动/静态库
  • 重生之我在学Vue--第10天 Vue 3 项目收尾与部署
  • Unity Lerp和InverseLerp函数用处
  • 【C++】每日一练(用队列实现栈)
  • 【fnOS飞牛云NAS本地部署跨平台视频下载工具MediaGo与远程访问下载视频流程】
  • VS Code 配置优化指南
  • 【TES817】基于XCZU19EG FPGA的高性能实时信号处理平台
  • 【从零开始学习计算机科学】数据库系统(七)并发控制技术
  • 元宇宙与数字孪生
  • 如何查看mysql某个表占用的空间大小
  • 深度学习 bert流程
  • ClickHouse的数据引擎:解锁大数据分析的奥秘
  • Netty基础—4.NIO的使用简介二
  • 工控hmi医疗终端机的界面如何来设计?本文为你解答
  • GolangTCP通信解决粘包问题
  • JAVA中的多线程安全问题及解决方案
  • 计算机网络-网络存储技术
  • MySql数据库等级考试学习分享2(Day5)
  • 深度学习----激活函数