5.11的QChar、QString、QTextBoundaryFinder和双向文本算法现在完全兼容Unicode 10

本文翻译自:Qt 5.11 released

原文作者: Qt公司CTO兼Qt开源项目维护官Lars Knoll
翻译校审:Richard、Hongfei、Haipeng

5月22日,我们提发布了Qt 5.11。与以往一样,Qt 5.11增加了许多新功能,并修复了许多现有功能的bug。一起来看看这些很酷的新功能吧!

Qt Core 和Qt Network

我们对Qt Core做了许多细节优化。例如,一些工具类新增了引用传值的重载方法;补全了一些函数以保证API与STL的兼容性。我们的Item Model也增加了许多新特性。

Qt Network现在在IOS 上支持ALPN和HTTP / 2协议。在QNetworkRequest中附加一个Http2DirectAttribute,就可直接创建一个HTTP/2连接,而无需初始的协议协商。

Qt Core中的较大更新是对Unicode的支持。QChar、QString、QTextBoundaryFinder和双向文本算法现在完全兼容Unicode 10。

Qt GUI和Qt Widgets

支持Windows上的辅助功能是Qt 5.11的重点改进之一,我们基于Microsoft UI Automation重写了原先在Microsoft Active Accessibility 框架上的代码,从而增强了对Windows辅助功能的支持。

另一项主要工作是改进Windows上窗体样式,以更好支持高DPI显示。Linux上的打印对话框也被改头换面,对所有通用Unix打印系统(CUPS)选项提供了更好的支持。

我们修复了Qt Widgets的多个bug,并在QLineEdit中支持用鼠标快速选择文本。

以上是我们为所有台式机用户所做的更新。

Qt QML

我们为QML引擎做了许多优化,重写了QML的编译管线。新管线大幅提升了性能和可维护性。

新管线总是将QML编译为平台独立的字节码。引擎将这个字节码缓存进.qmlc文件。用户还可以利用qmlcompiler功能提前生成字节码。

新的字节码解释器在性能上有大幅提升。在我们的大多数测试用例中,相比Qt5.10的JIT技术,新的解释器已经能达到其80%到90%的性能。在解释器上层,我们还增加了新的热点JIT。因此在各个方面都可以击败我们旧版JIT技术。

Qt Quick 和 Qt Quick Controls

在Qt Quick方面,我们在Image元素中增加了对加载压缩纹理的支持,并提供.ktx 和.pkm两种容器文件格式。使用这种格式存储的图像文件可以直接被GPU处理。从而帮助减少应用程序的启动时间和内存消耗。

我们对Qt Quick Controls 2增加了许多小功能并修复了不少Bug。例如Buttons的自动重复属性、改进ScrollBars定位支持以及SpinBoxes的样式支持。

Qt Location

我们为Qt Location也做了许多改进。首先,最重要的新功能是实验性地增加了对turn-by-turn导航的支持。其次,Qt Location增加了一套实验性API,用于创建非QQuickItems的Map Object。MapPolyline对象的性能已有很大提升,图层功能现在也可以与Map Item结合使用。此外, Routing和Places对象已使用可扩展的API,添加了全新的WayPoint元素。最后,MapBox插件支持地理编码和Places。

Qt Webengine

按照惯例,我们将Qt Webengine的Chromium版本更新为Chromium 65。此外,我们现在支持嵌入式DevTools,不再需要打开另一个浏览器、可安装的cookie筛选器和配额权限。

Qt for Device Creation

Qt for Device Creation也同时拥有上述所有新功能。我们还一直在改进嵌入式专属的特性。

新功能还包括对基于硬件的图层的支持,目前的技术预览版仅能运行在支持VSP2硬件合成的设备上。该功能可用于诸如视频背景之类的功能,并且有助于提高性能,降低功耗。我们计划在今后的版本中支持更多平台、硬件组合。

我们改进了Qt SerialBus的CAN总线支持。KNX模块也有较大更新。此外,Qt 5.11还增加了一个支持OPC/UA的新模块,后者在Qt 5.11中以技术预览版的形式呈现。

其他改进

新的qdoc利用libclang编译,从而在文档中更好的支持新的C++标准。Qt Serialbus模块和Qt蓝牙模块方面也增强了对CAN总线和BTLE的支持。

Qt 5.11取消了对某些老版编译器和平台的支持,包括MSVC 2013, QNX 6.6和macOS 10.10。

Qt 3D 和 Qt 3D Studio

目前,我们正全力准备第二版Qt 3D Studio。其中包括基于Qt 3D、重写runtime,这会让用户在创建3D用户界面时能更好地集成Qt其他部分。Qt 3D也将有众多改进,包括全新功能、性能改进和Bug修复。Qt 3D Studio 2.0目前还处于测试阶段,我们会尽快推出正式版。

Qt对Webassembly和Python的支持

在Qt for Webassembly方面,我们正填补跨平台的最后一片空白;让用户能够以Web和浏览器为平台运行Qt应用程序。第一版已作为技术预览版发布。

此外,我们也在积极推动对Qt on Python的支持。第一版计划在本月发布。

感谢Qt 社区对我们的支持

Qt 5.11新增了许多新功能,并进行了性能的提升。如果没有那些为Qt贡献新功能、Bug修复、文档建立、示例和Bug报告的公司及个人开发者,我们无法完成这么多工作。要感谢的人实在太多了,在此特别鸣谢英特尔的Thiago Maciera长期以来对Qt Core的维护;合作伙伴basysKom的Jannis Voelker和Frank Meerkötter在OPC/UA上付出的心血;合作伙伴KDAB的Albert Astals Cid对CUPS printing的付出,Sean Harmer和Paul Lemire在Qt 3D上的贡献;还有,那些协助维护Qt各个模块的开发者们。感谢你们!

下载新版本

我们照例将对Qt 5.11提供为期一年的支持。如果您需要更长的支持期,推荐使用长期版Qt 5.9,我们将支持至2020年6月。当然,您可以向Qt公司购买延长服务。我们计划今年11月发布Qt 5.12,这将是一个长期支持的版本。

您可以从您的Qt帐户或www.qt.io/download下载Qt 5.11。希望您喜欢使用这个新版本!

http://blog.qt.io/blog/2018/06/29/overview-new-features-qt-5-11/

Slightly ahead of our planned schedule, we have released Qt 5.11 today. As always, Qt 5.11 comes with quite a few new features as well as many bug fixes to existing functionality. Let’s have a look at some of the cool new features.

Qt Core and Network

A lot of work on small details has happened in Qt Core. As an example, some of our tools classes got new rvalue reference overloads and we filled in some missing methods for better STL compatibility. Our item model has received a couple of new features, for details have a look at this blog post.

In Qt Network, ALPN and thus HTTP/2 negotiation are now supported on iOS. QNetworkRequest gained a Http2DirectAttribute to start an HTTP/2 connection without first negotiating.

One of the larger updates in Qt Core went into our Unicode support. QChar, QString, QTextBoundaryFinder and our algorithm for bidirectional text are now fully compatible with Unicode 10.

Qt GUI and Widgets

A major focus area for Qt 5.11 has been the accessibility support on Windows. It got completely rewritten and is now based on Microsoft UI Automation, not on the old Microsoft Active Accessibility framework, leading to a vastly improved accessibility support on Windows.

Some major work has also gone into improving the widget styles on Windows to better support High-DPI displays. The print dialog on Linux has also received a major overhaul, now featuring much better support for all the CUPS provided options.

Qt Widgets itself has received numerous bug fixes and support for quick text selection by mouse in QLineEdit.

Together, this gives a very nice update for all our Desktop users.

Qt QML

Some larger changes have been happening under the hood of our QML engine. We have completely rewritten the compiler pipeline, that parses and compiles QML. The new pipeline brings some major improvements in performance and maintainability.

The new pipeline always compiles QML to a platform-independent bytecode. The engine will cache this bytecode in .qmlc files. You can also generate the bytecode ahead of time, using the qmlcompiler feature (which is now also available in the open source version).

The new bytecode interpreter has a vastly improved performance over the old version. It reaches around 80-90% of the performance of the JIT in Qt 5.10 in most of our test cases. A new hotspot JIT has been added on top of that, beating our old JIT in pretty much all areas.

For more details, have a look at the separate blog post here.

Qt Quick and Qt Quick Controls

In Qt Quick, we’ve expanded our support for loading compressed textures in the Image element and now support both .ktx and .pkm container file formats. This feature helps cut down on application startup time and memory consumption by storing images in a format that is directly digestible by the GPU. For more details have a look at this blog post.

Qt Quick Controls 2 has received lots of smaller features and bug fixes. Examples are auto-repeat properties for Buttons, better positioning support for ScrollBars and better styling support for SpinBoxes.

Qt Location

Qt Location is also an area where many cool things have been happening. The largest new feature is probably the experimental support for turn-by-turn navigation. But there is more. Qt Location now has an experimental API to create map objects that are not bound to QQuickItems. The performance of MapPolyline objects has seen large improvements and layers are now working in combination with Map items. In addition, we made the Routing and Places API extensible and added a new WayPoint element. Finally, the MapBox plugin gained support for geocoding and Places.

Qt Webengine

As has become standard in our feature releases, we’ve updated the Chromium version underneath Qt Webengine to Chromium 65. In addition, we now support embedded DevTools without requiring the use of a separate browser, an installable cookie filter and quota permissions.

Qt for Device Creation

All new functionality mentioned above is of course also available in Qt for Device Creation. In addition, we’ve been working on improving some embedded-specific features.

One new feature here is support for hardware-based graphics layers, currently available as a Technology Preview for platforms supporting VSP2 hardware compositing. This can be used for features such as Video underlays and helps improve performance and reduce power consumption. We are aiming to extend the support to more platforms and hardware combinations in future releases.

Qt SerialBus has received improvements to its CAN Bus support. The KNX module has received some larger updates. In addition, Qt 5.11 will feature a new module that adds support for OPC/UA. This module is available as a Technology Preview in Qt 5.11.

Other items

qdoc now uses libclang to parse C++ giving us much better support for modern C++ in our documentation. Qt Serialbus and Bluetooth have now improved support for CAN bus and BTLE.

With Qt 5.11, we have also removed support for some older compilers and platforms. MSVC 2013, QNX 6.6 and macOS 10.10 are no longer supported.

Qt 3D and Qt 3D Studio

We are working hard to get the second release of Qt 3D Studio ready for you. This second release comes with a fully rewritten runtime, that’ll be based on top of Qt 3D. This will give all of you a better and deeper integration into the rest of Qt when using Qt 3D Studio to create 3D user interfaces.  With this work, Qt 3D has also received numerous new features, performance improvements, and bug fixes. Qt 3D Studio 2.0 is currently in beta, and we are working hard to get the final release out within the next few weeks.

Qt for Webassembly and Python

With Qt for Webassembly, we are working towards filling the last large gap in our cross-platform story, allowing our users to target the web and browsers as a platform for Qt applications. The first version has been released as a Technology preview today, please check out the separate blog post for further details.

In addition, to the above, we are actively working on supporting Qt on Python . The first release of it is planned for June, and we’ll keep you posted with more details.

Thanks to the Qt Community

Qt 5.11 adds a lot of new functionality and improvements. Some of them would not have been possible without the help of the great community of companies and people that contribute to Qt by contributing new functionality, bug fixes, documentation, examples or bug reports. There are too many people to mention everybody in detail, but I’d like to especially thank Thiago Maciera from Intel for his ongoing work on maintaining Qt Core. From our partner basysKom, I’d like to thank Jannis Voelker and Frank Meerkötter for their work on OPC/UA. From our partner KDAB, I’d like to thank Albert Astals Cid for his work on CUPS printing, Sean Harmer and Paul Lemire for their ongoing work on Qt 3D and many others for helping maintain different parts of Qt. Thank you!

Get the new version

As usual, Qt 5.11 will be supported for one year. If you need longer support periods, Qt 5.9 is our current LTS release and will be supported until June 2020. Extended lifetime support can of course always be purchased from The Qt Company if required. Our next release after Qt 5.11, Qt 5.12 is planned for November and will again be a long-term supported release.

You can download Qt 5.11 from your Qt Account or www.qt.io/download. I hope you’ll like and enjoy the new release!

http://blog.qt.io/blog/2018/05/22/qt-5-11-released/

猜你喜欢

转载自www.cnblogs.com/findumars/p/9247007.html
10