Qt6是否还会延续Q5d QML和Qt Quick绑定的概念

Qt6引入了将QML和Qt Quick绑定的概念带回C++核心,允许开发者在C++中使用绑定机制。本文讨论了Qt 5中的属性绑定,对比了Qt 6中的改进,包括延迟绑定评估以提高性能,以及如何在C++中实现绑定,同时保持与QObject属性系统的兼容性。此外,还探讨了新系统的性能基准和向后兼容性。
摘要由CSDN通过智能技术生成

Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式设备,Android(Necessitas)和iOS的端口上运行。现在我们为你提供了免费的试用版。赶快点击下载Qt6最新试用版>>

工具推荐:

  • QtitanRibbon下载试用: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart | 下载试用 :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面操作系

Qt 6具有很多新功能。我们添加的最令人兴奋的功能之一是将QML和Qt Quick绑定的概念带回到Qt的核心,并允许从C ++使用它。

Qt 5中的绑定

让我们首先回顾一下Qt 5中属性绑定的工作方式。在那里,绑定支持仅限于Qt Quick。这是一个非常简单的示例:

import QtQuick 2.15 Rectangle { height: width border.width: height/10 }

这样做的目的是在一个 Rectangle 对象上设置两个绑定。第一个绑定确保Rectangle永远是正方形。第二个绑定将边框宽度设置为高度的10%。然后,Qt中的QML引擎确保这些关系将被保留,并在Rectangle的宽度改变时自动调整高度和边框宽度。

这种绑定的机制是使Qt Quick中的UI定义大多以声明的方式编写。绑定表达式(绑定的右侧)可以任意复杂,包含对其他对象属性的引用,甚至调用其他方法。

在Qt 5的生命周期中,我们已经看到,绑定使代码的表现力更强,并删除了很多需要编写的胶水代码。所以,在Qt 6中,我们的目标是允许作为一个C++开发者也能使用这种机制。

让我们看看如何在C++中表达同样的关系。下面是我们希望这样一个Rectangle如何写成一个C++类。

class Rectangle { public: Property<int> width; Property<int> height; Property<int> border; Rectangle() { height.setBinding(width); border.setBinding([this]() { return height / 10; }); } };

这定义了一个具有3个属性的Rectangle类:width,height和border。然后,构造函数设置两个绑定,一个绑定将高度绑定到宽度,另一个绑定将边框绑定到高度的10%。

当我们着手进行Qt 6时,我们面临的问题是我们是否可以以高效且高效的方式来实现这一目标。

绑定系统的目标

除了良好且易于使用的语法外,系统还需要满足其他一些要求。

  • 性能系统需要快速,
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值