1.6 Qt的版本

Qt可以分为商业版和免费版。商业版又分为专业版和企业版。Qt免费版是Qt的非商业版本,是开源的,可以免费下载,遵循GPLv3版权协议。对于学习者来说,使用免费版即可。

Qt 5.12 LTS(长期支持版本)于2018年12月6日正式发布,官方提供为期三年的支持。自Qt 5.9.7发布以来,官方一直专注于提升软件的质量,修复了2000多个bug;若从Qt 5.6.3算起,则已经修复5000多个bug。当然这只是开始,官方通过定期发布补丁,持续提升Qt 5.12软件的质量。

和其他主要版本一样,Qt 5.12 LTS也包含了许多新特性。下面看一下其中的几个亮点。

(1)新的模块和平台

Qt 5.12完全支持Qt for Python,让Python开发者可以使用各种Qt API。Qt for Python源自多年来一直在qt-project.org上托管的PySide项目,把大多数Qt C++的API开放给Python开发者使用。简而言之,Python开发者现在可以创建复杂的图形化应用程序和用户界面。这是Python开发者的福音。

学过MFC开发的人都知道MFC可以生成ActiveX控件,然后放到网页中使用。Qt目前也有这样的功能,Qt 5.12包含了Qt for WebAssembly的第二个技术预览版。使用Qt for WebAssembly,我们可以编译Qt应用程序,而后在任何现代的Web浏览器中运行。Qt for WebAssembly仍被标记为技术预览版,它的功能非常强大。现在的开发工具都支持网页插件,Qt正在努力地追赶MFC。

除了支持Python和WebAssembly这两个新平台之外,Qt 5.12还完全支持两个原来的技术预览模块:

· Qt Remote Objects:使Qt进程之间的通信变得天衣无缝。它允许将QObject的属性、信号和槽暴露给另一个进程,且这两个进程可以运行在不同设备上。

· Qt WebGL Streaming Plugin:另一个现在完全支持的插件,允许我们通过网络将应用程序的用户界面以流的方式传输到任何现代浏览器上。

(2)Qt QML和Qt Quick

在新版本中,对QML中的JavaScript引擎进行了一些重大改进。它从兼容ECMAScript 5升级到现在完全支持ECMAScript 7,同时也方便了第三方JavaScript库的集成。它还支持ECMAScript模块,可以从C++和QML/JS加载。

在Qt Quick中还添加了一种Item View,即TableView,它比之前QQC1中的实现更高效,并填补了View控件中最后一项重要的空白。Qt Quick Controls 2中的许多控件还扩充了新方法和新功能。

Qt 5.11的Pointer Handlers现在改名为Input Handlers,已经正式发布,并成为Qt Quick中的重要功能。过去使用MouseArea或TouchArea模块实现复杂交互时非常困难,Input Handlers模块简化了复杂触摸交互的设计。另外,Input Handlers还添加了两个新的Input Handlers,用于悬停和拖动项目。

Qt Quick现在支持预生成的distance field textures。这些纹理包含在字形(glyph)中,并用于在Qt Quick中渲染文本,在编译时预生成它们有助于提高应用程序的启动性能,尤其是在低端嵌入式设备上。

(3)Qt Core和Qt Network

Qt Core获得了对CBOR(简明二进制对象展现)的支持,这是一种类似于JSON的二进制格式,但CBOR允许更多的数据类型和提供更多的灵活性。

新颁布的Qt改进了QRegularExpression,以支持通配符匹配,现在可以弃用旧的QRegExp类了。

在Qt Network中,添加了DTLS over UDP的支持。在MAC OS和iOS上,通过TransportSecurity后端可以支持ALPN和HTTP/2,并且在通用SSL后端中添加了PKCS#8支持。

(4)Qt GUI和Widgets

在Windows上,Qt现在支持Windows UI自动化,允许基于Qt的UWP应用程序与各种可用的可编程UI控件工具进行交互。Qt使用统一的Windows Pointer Input Messages(在Windows 8或更高版本中支持)替换了平板电脑、触摸屏、触摸板或鼠标中的输入实现部分。现在新增了一些硬件的支持,如MS Surface系列中的screen digitizer,因而不再需要定制驱动来支持MS Surface系列了。

新版本Qt为QGradient添加了许多预定义的渐变(参考https://webgradients.com/)。QImage支持RGBA64图像格式,每个颜色通道16位。这些信息可以从PNG或TIFF的文件中读取,并上传到OpenGL,或从OpenGL中获取。

最后,新版本Qt还修复了Qt Widgets中的大量bug。

(5)其他更新

Virtual keyboard支持13种额外的键盘布局以及MyScript手写识别功能,带有一个公共扩展API,允许开发者用于定义自己的布局。

Qt Location包含一个升级的MapBox插件和几个小的API增强功能,且已将Qt WebEngine升级到Chromium 69,并有客户端证书的支持。

Qt for Automation更新了新版的KNX和MQTT模块,支持最新版本的协议,作为技术预览版本,添加了对OPC/UA的支持。

另外,Qt 3D Studio 2.2 Studio也将基于Qt 5.12 LTS。

最后,Qt 5.12还附带了Qt Creator 4.8。

总而言之,Qt 5.12值得你学习和拥有!