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时,我们面临的问题是我们是否可以以高效且高效的方式来实现这一目标。
绑定系统的目标
除了良好且易于使用的语法外,系统还需要满足其他一些要求。
- 性能系统需要快速,