Qt 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/
Qt 5.11的QChar、QString、QTextBoundaryFinder和双向文本算法现在完全兼容Unicode 10的更多相关文章
- java 11 移除的一些其他内容,更简化的编译运行程序,Unicode 10,移除了不太使用的JavaEE模块和CORBA技术,废除Nashorn javascript引擎,不建议使用Pack200 相关api
移除的一些其他内容 移除项 移除了com.sun.awt.AWTUtilities 移除了sun.misc.Unsafe.defineClass, 使用java.lang.invoke.MethodH ...
- Qt c++11
借助 Qt 5 的信号槽语法,我们可以将一个对象的信号连接到 Lambda 表达式,例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 // !!! Q ...
- 【Qt开发】 数字转QString格式化
1 想要获得001 002 这样的数字 QString b=QString("%1").arg(i, 3, 10, QChar('0')); QStringList list; ...
- PyQt(Python+Qt)学习随笔:Qt中的部分类型QString、QList和指针、引用在PyQt中的实现方式
老猿Python博文目录 老猿Python博客地址 在我们查阅Qt的文档资料时,可以看到Qt中的链表使用的是QList,字符串使用的是QString,但老猿在测试时发现这两个类型PyQt不支持,无法找 ...
- Qt中int转换成QString
(1) QString QString::number ( long n, int base = 10 ) [static] examle: long a = 48; QString s = QStr ...
- Qt、Vc下用fopen打开中文名字的文件(转换成Unicode后,使用_wfopen函数)
在做一个Qt项目的时候,完成上传文件时,通过fopen打开文件用来读时发现fopen不能打开中文的文件名,自己在网查找一下,解决方法如下 参考:http://weidaohang.org/wanglu ...
- qt designer设置界面是label中文字与文本框对齐设置
往往在使用 qt designer布置界面时,添加的label和文本框中是直接从工具箱中拖进去的,由于每个控件尺寸大小不一,就会造成label中的文字相对于文本框比较较偏上,看下面未经调整的直接效果 ...
- Hibernate(11)_基于外键的双向1对1
一.基于外键的双向1对1 对于基于外键的1-1关联,其外键可以存放在任意一边,在需要存放外键一端,增加many-to-one元素.为many-to-one元素增加unique="true&q ...
- Qt 调试信息、打印信息、输出到文本
void debug_msg(QVariant msg) { ; QFile file("debug_msg.txt"); ) { i = ; file.open(QFile::W ...
随机推荐
- ArcSDE学习笔记--------增、删、改、查操作
建立连接 package org.lq.ssm.gp.controller; import com.esri.sde.sdk.client.SeConnection; import com.esri. ...
- [Recompose] Handle React Events as Streams with RxJS and Recompose
Events are the beginning of most every stream. Recompose provides a createEventHandler function to h ...
- HDU3265 Examining the Rooms【stirling数】
题目链接: http://acm.hdu.edu.cn/showproblem.php? pid=3625 题目大意: 有N个房间,每一个房间的要是随机放在某个房间内,概率同样.有K次炸门的机会. 求 ...
- Android开发:怎样把Android studio中的Library公布到Jcenter
本人之前写了个简单的库,想放到Jcenter上.查过各种资料.踩过各种坑,久经折腾.最终发现了一个很easy而且高效的方法.现分享出来,该方法本人亲測可用,实现起来大概仅仅须要半个小时.这种方法是国外 ...
- HNU13303 Counting substhreengs(递推)
题目:http://acm.hnu.cn/online/? action=problem&type=show&id=13303&courseid=0 题意:给你一个字符串,由数 ...
- 智课雅思词汇---七、cur是什么意思
智课雅思词汇---七.cur是什么意思 一.总结 一句话总结:词根:cur, curs ( cor, cour, cours, coars) = to run 1.cub是什么意思? 词根:cumb, ...
- css3 边框阴影效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- xfce4 + docky ,docky 上面那透明的一条黑色横线去掉方法
在安装完Debian 9 + xfce4桌面后 ,添加docky启动后,会在docky 上面有一条黑色横线看起来非常不舒服. 去掉方法:设置管理器->窗口管理器微调->合成器->取消 ...
- cd---切换工作目录
cd命令用来切换工作目录至dirname. 其中dirName表示法可为绝对路径或相对路径.若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录).另外,~也表 ...
- mysql中group by和order by混用 结果不是理想结果
在使用mysql排序的时候会想到按照降序分组来获得一组数据,而使用order by往往得到的不是理想中的结果,那么怎么才能使用group by 和order by得到理想中的数据结果呢? 例如 有一个 ...