博客
关于我
Qt5 新特性
阅读量:439 次
发布时间:2019-03-06

本文共 3287 字,大约阅读时间需要 10 分钟。

Qt 5 已经临近发布,其最大的特点就是模块化。将原来庞大的模块更细分为不同的部分,同时,一个大版本的升级,当然少不了添加、删除各个功能类。以下是 Qt 5 的一些重要特性,具体内容来自官方文档。


Qt Core

Qt Core 是 Qt 5 的核心模块,包含了所有非 GUI 的功能。所有其他的 Qt 模块都基于这个模块。与 Qt 4 的 QtCore 不同之处在于,Qt Core 还包括了 XML 等 Qt 4 中存在的部分。


QStandardPaths

QStandardPaths 是 Qt 4 的 StandardizePaths 的增强版,其 API 大部分基于 KDE 4 的技术。这类提供了比 QDesktopServices 更多的功能,例如在某一存储位置搜索给定文件等。


MimeTypes

QMimeDatabase 提供了判断给定文件或内存区块的 mimetype 的功能,原理是通过扩展名和(或)内容信息。MIME 类型数据库由 freedesktop.org 的 shared-mime-info 项目提供。如果在当前系统上找不到 MIME 类型数据库(例如在大多数 Windows 或 Mac OS X 系统上),Qt 则使用自己的拷贝。


JSON 支持

QtCore 现在包含了一系列用于解析和生成 JSON 文档的类。这些类允许你在 JSON 的内存二进制表现形式和标准文本之间进行相互转换。这些类的目的是提供 JSON 格式的支持。


编译器检查 signal-slot 连接

QObject 现在支持一种额外的语法,可以支持在编译期对信号槽的连接进行检查,比如 signal 和 接受者是否都存在、参数是否匹配等。目前我们使用 C++ 模板实现了这一功能,不过当 C++11 获得全面支持之后,使用 C++11 新特性更为方便。


兼容 Perl 的正则表达式

Qt 5 新增加一个新的类 QRegularExpression,提供兼容 Perl 的正则表达式。这个类比 QRegExp 更强大,速度更快,支持更多特性,例如 lazy 和 possessive 谓词、lookbehinds、具名捕获组 named capturing groups 和循环匹配。


Qt Gui

QtGui 新增了一系列新的类,其中最重要的是 QWindow,QScreen,QSurfaceFormat 和 QOpenGLContext。这些都作为 QtWidgets 模块的后端,以及直接供 QtQuick 2 使用。


等价于 Qt4 的 QtOpenGL 模块的一系列类

在 Qt 4 的 QtOpenGL 模块中最有用的类被移动到 QtGui 模块中了,例如 QOpenGLFramebufferObject、QOpenGLShaderProgram、QOpenGLFunctions 等等。


QOpenGLPaintDevice

我们没有将 QWindow 和 QOpenGLFramebufferObject 作为 QPaintDevice 的子类,而是提供了一个新的 QOpenGLPaintDevice 类,使得可以使用 QPainter 渲染当前边界的上下文更简单和灵活。


Qt Network

Qt 5 对网络功能进行了全面的优化,以下是新增和改进的内容:

QDnsLookup

现在,使用 Qt 5 提供的 QDnsLookup API 可以查询 DNS 记录了。这个类并不是为了替换掉 QHostInfo,后者仍然具有根据 IP 地址获取主机名的 API。QDnsLookup 更主要的是用于其它形式的 DNS 记录,例如 SRV、TXT 以及 MX。这实际上是替代了已经被废弃的 Q3Dns API。

改进对 IPv6 和 dual mode 网络的支持

许多应用程序使用主机名和网络层的透明协议来提供对 IPv6 的透明支持。绑定到 QHostAddress::Any 的 QTcpServer 和 QUdpSocket 可以同时支持 IPv4 和 IPv6 连接。

绑定 TCP socket

QTcpSocket 现在可以在连接前绑定到某一 IP 地址,这使得在多穴环境下限制连接到特定接口成为可能。

移除 QFtp 和 QHttp API

Qt 5 移除了 QHttp API,原因是功能重复。QNetworkAccessManager 足以提供类似的功能。

SSL 证书扩展

Qt 5 增加了访问 SSL 认证的扩展,这将方便 Qt 框架开发人员,同时作为未来的 Qt SSL 支持的基础。


Qt 3D

Qt 3D 是 Qt 5.0 新增模块,虽然它在实验室项目中已经存在好几年,也向 Qt 贡献了很多代码。像 QMatrix4×4、QGLShaderProgram 和 QVector3D 这些类,都是来自 Qt 3D 项目的。Qt3D 基于 QML2 和 Qt OpenGL 的支持。


Qt Location

Qt Location 是 Qt 5.0 新增模块,虽然它几年前就是 Qt Mobility 的一部分。相比于 Qt Mobility 提供的版本,Location API 则有下面的几点改变:

改进地图功能

现在的地图是 QML2 场景图的一部分,直接使用直接 OpenGL 的硬件渲染。

支持更多地图对象

使用 MapQuickItem 可以向地图添加任意 QML2 item。

性能提升

大幅提升性能,特别是大地图的多边形和一般对象。

支持缩放和旋转

内置缩放手势、剪切和加速度感应。

Landmarks API 被 Places API 取代

提供相同功能的 C++ 和 QML API,支持查看更加丰富的内容(例如图像、可编辑区域等)的新 API。


鼠标输入

Qt 5 现在支持更多的鼠标按键事件,特别是在 XCB、XLIB、DirectFB、Wayland、Evdev、OS X 和 Blackberry/QNX 平台上提供更全面的鼠标输入支持。


QtQuick

QtQuick 2.0 是一个重大升级,以下是新增和改进的内容:

SceneGraph 渲染器

QtQuick 2 基于 OpenGL 场景。下面的类直接替换掉 QtQuick 1 中的同名类:

  • QQuickView
  • QQuickCanvas
  • QQuickItem
  • QQuickPaintedItem

改进 QML 引擎和语言

  • JS 引擎改为 V8。
  • 处理器和编译器优化。
  • 新增绑定优化器。
  • ValueType 改进:
    • QColor 现在作为一个值类型。
    • 支持 QVector4D。
  • 模块 API 可以将任意功能放置在 namespace 中。
  • JavaScript 文件可以引入 QML 模块。
  • 删除了 var 和 variant 属性类型,新增 var 类型用于存储 JavaScript 引用。
  • QQmlExpression 可以直接由 QQmlScriptString 构建。
  • 支持特定顺序存储类型(如 QList
    、QList
    等)。

新增 Canvas 类

新增 Canvas 类似 HTML5 canvas API,提供以下功能:

  • 支持 2 种渲染目标:Canvas.Image 和 Canvas.FramebufferObject。
  • 支持后台线程渲染。
  • 支持层叠渲染。

粒子系统

QtQuick.Particles 2.0 模块包含了可以组成 2D 粒子的元素。


QtQuick 1 作为独立的库和模块

使用 QtQuick 1 的特定 API 编写 C++ 应用程序,例如 QDeclarativeView 或 QDeclarativeItem 必须在 .pro 文件中添加 quick1 模块,例如 QT += quick1。


以上是 Qt 5 的一些重要特性,具体内容请参考 Qt官方文档或相关开发者社区。

转载地址:http://alnyz.baihongyu.com/

你可能感兴趣的文章
nginx报错:the “ssl“ parameter requires ngx_http_ssl_module in usrlocalnginxconfnginx.conf128
查看>>
nginx最最最详细教程来了
查看>>
Nginx服务器上安装SSL证书
查看>>
Nginx服务器的安装
查看>>
Nginx模块 ngx_http_limit_conn_module 限制连接数
查看>>
nginx添加模块与https支持
查看>>
Nginx用户认证
查看>>
Nginx的location匹配规则的关键问题详解
查看>>
Nginx的Rewrite正则表达式,匹配非某单词
查看>>
Nginx的使用总结(一)
查看>>
Nginx的使用总结(三)
查看>>
Nginx的使用总结(二)
查看>>
Nginx的可视化神器nginx-gui的下载配置和使用
查看>>
Nginx的是什么?干什么用的?
查看>>
Nginx访问控制_登陆权限的控制(http_auth_basic_module)
查看>>
nginx负载均衡和反相代理的配置
查看>>
nginx负载均衡器处理session共享的几种方法(转)
查看>>
nginx负载均衡的5种策略(转载)
查看>>
nginx负载均衡的五种算法
查看>>
nginx转发端口时与导致websocket不生效
查看>>