本文共 3287 字,大约阅读时间需要 10 分钟。
Qt 5 已经临近发布,其最大的特点就是模块化。将原来庞大的模块更细分为不同的部分,同时,一个大版本的升级,当然少不了添加、删除各个功能类。以下是 Qt 5 的一些重要特性,具体内容来自官方文档。
Qt Core 是 Qt 5 的核心模块,包含了所有非 GUI 的功能。所有其他的 Qt 模块都基于这个模块。与 Qt 4 的 QtCore 不同之处在于,Qt Core 还包括了 XML 等 Qt 4 中存在的部分。
QStandardPaths 是 Qt 4 的 StandardizePaths 的增强版,其 API 大部分基于 KDE 4 的技术。这类提供了比 QDesktopServices 更多的功能,例如在某一存储位置搜索给定文件等。
QMimeDatabase 提供了判断给定文件或内存区块的 mimetype 的功能,原理是通过扩展名和(或)内容信息。MIME 类型数据库由 freedesktop.org 的 shared-mime-info 项目提供。如果在当前系统上找不到 MIME 类型数据库(例如在大多数 Windows 或 Mac OS X 系统上),Qt 则使用自己的拷贝。
QtCore 现在包含了一系列用于解析和生成 JSON 文档的类。这些类允许你在 JSON 的内存二进制表现形式和标准文本之间进行相互转换。这些类的目的是提供 JSON 格式的支持。
QObject 现在支持一种额外的语法,可以支持在编译期对信号槽的连接进行检查,比如 signal 和 接受者是否都存在、参数是否匹配等。目前我们使用 C++ 模板实现了这一功能,不过当 C++11 获得全面支持之后,使用 C++11 新特性更为方便。
Qt 5 新增加一个新的类 QRegularExpression,提供兼容 Perl 的正则表达式。这个类比 QRegExp 更强大,速度更快,支持更多特性,例如 lazy 和 possessive 谓词、lookbehinds、具名捕获组 named capturing groups 和循环匹配。
QtGui 新增了一系列新的类,其中最重要的是 QWindow,QScreen,QSurfaceFormat 和 QOpenGLContext。这些都作为 QtWidgets 模块的后端,以及直接供 QtQuick 2 使用。
在 Qt 4 的 QtOpenGL 模块中最有用的类被移动到 QtGui 模块中了,例如 QOpenGLFramebufferObject、QOpenGLShaderProgram、QOpenGLFunctions 等等。
我们没有将 QWindow 和 QOpenGLFramebufferObject 作为 QPaintDevice 的子类,而是提供了一个新的 QOpenGLPaintDevice 类,使得可以使用 QPainter 渲染当前边界的上下文更简单和灵活。
Qt 5 对网络功能进行了全面的优化,以下是新增和改进的内容:
现在,使用 Qt 5 提供的 QDnsLookup API 可以查询 DNS 记录了。这个类并不是为了替换掉 QHostInfo,后者仍然具有根据 IP 地址获取主机名的 API。QDnsLookup 更主要的是用于其它形式的 DNS 记录,例如 SRV、TXT 以及 MX。这实际上是替代了已经被废弃的 Q3Dns API。
许多应用程序使用主机名和网络层的透明协议来提供对 IPv6 的透明支持。绑定到 QHostAddress::Any 的 QTcpServer 和 QUdpSocket 可以同时支持 IPv4 和 IPv6 连接。
QTcpSocket 现在可以在连接前绑定到某一 IP 地址,这使得在多穴环境下限制连接到特定接口成为可能。
Qt 5 移除了 QHttp API,原因是功能重复。QNetworkAccessManager 足以提供类似的功能。
Qt 5 增加了访问 SSL 认证的扩展,这将方便 Qt 框架开发人员,同时作为未来的 Qt SSL 支持的基础。
Qt 3D 是 Qt 5.0 新增模块,虽然它在实验室项目中已经存在好几年,也向 Qt 贡献了很多代码。像 QMatrix4×4、QGLShaderProgram 和 QVector3D 这些类,都是来自 Qt 3D 项目的。Qt3D 基于 QML2 和 Qt OpenGL 的支持。
Qt Location 是 Qt 5.0 新增模块,虽然它几年前就是 Qt Mobility 的一部分。相比于 Qt Mobility 提供的版本,Location API 则有下面的几点改变:
现在的地图是 QML2 场景图的一部分,直接使用直接 OpenGL 的硬件渲染。
使用 MapQuickItem 可以向地图添加任意 QML2 item。
大幅提升性能,特别是大地图的多边形和一般对象。
内置缩放手势、剪切和加速度感应。
提供相同功能的 C++ 和 QML API,支持查看更加丰富的内容(例如图像、可编辑区域等)的新 API。
Qt 5 现在支持更多的鼠标按键事件,特别是在 XCB、XLIB、DirectFB、Wayland、Evdev、OS X 和 Blackberry/QNX 平台上提供更全面的鼠标输入支持。
QtQuick 2.0 是一个重大升级,以下是新增和改进的内容:
QtQuick 2 基于 OpenGL 场景。下面的类直接替换掉 QtQuick 1 中的同名类:
新增 Canvas 类似 HTML5 canvas API,提供以下功能:
QtQuick.Particles 2.0 模块包含了可以组成 2D 粒子的元素。
使用 QtQuick 1 的特定 API 编写 C++ 应用程序,例如 QDeclarativeView 或 QDeclarativeItem 必须在 .pro 文件中添加 quick1 模块,例如 QT += quick1。
以上是 Qt 5 的一些重要特性,具体内容请参考 Qt官方文档或相关开发者社区。
转载地址:http://alnyz.baihongyu.com/