Qt 5.12.10 是 Qt 5.12 系列的长期支持(LTS)版本的补丁发布,主要聚焦于 bug 修复和性能优化,本身并未引入新的高级功能,但继承了 Qt 5.12 系列引入的诸多高级特性
·
Qt 5.12.10 是 Qt 5.12 系列的长期支持(LTS)版本的补丁发布,主要聚焦于 bug 修复和性能优化,本身并未引入新的高级功能,但继承了 Qt 5.12 系列引入的诸多高级特性。以下是对 Qt 5.12 系列高级功能的详细说明,结合 Qt 5.12.10 的上下文,重点介绍开发者可能感兴趣的特性,内容以中文呈现,力求清晰易懂。
Qt 5.12 系列高级功能概览
Qt 5.12 是一个功能丰富的版本,引入了多项高级功能,特别是在性能优化、跨平台支持和用户界面开发方面。以下是主要高级功能的分类和详细说明,基于 Qt 5.12 的新特性文档。
1. Qt Core 模块的高级特性
- CBOR 数据支持:
- Qt Core 新增了对 Concise Binary Object Representation(CBOR)的支持,这是一种类似 JSON 的二进制数据格式,但支持更多数据类型(如二进制数据、整数、浮点数等),且更高效。
- 应用场景:适用于需要高效数据序列化的物联网(IoT)或嵌入式设备开发。
- 示例:可以用
QCborValue和QCborStreamReader处理 CBOR 数据,类似 JSON 的QJsonDocument。
- QRegularExpression 增强:
- 新增
wildcardToRegularExpression和anchoredPattern方法,简化通配符匹配和精确匹配的实现。 QSortFilterProxyModel支持QRegularExpression,增强了数据过滤的灵活性。- 应用场景:适合需要复杂字符串处理或数据筛选的应用程序,如日志分析工具。
- 新增
- QCryptographicHash 改进:
- 新增
hashLength静态方法,返回特定哈希算法的输出长度(如 SHA-256 的长度为 32 字节)。 - 应用场景:用于加密相关开发,如密码存储或数据完整性验证。
- 新增
2. Qt GUI 和 Widgets 模块
- Windows UI Automation 支持:
- 在 WinRT QPA(Qt Platform Abstraction)中支持 Windows UI Automation,使 Qt 开发的 UWP 应用程序能够与无障碍工具和程序化 UI 控制工具无缝协作。
- 应用场景:开发面向残障人士的应用程序或需要自动化测试的 UWP 应用。
- 统一输入处理:
- 在 Windows 8 及以上版本中,Qt 5.12 统一了平板、触摸屏、触摸板和鼠标的输入处理,基于 Windows Pointer Input Messages。
- 支持无需特殊驱动的硬件,如 Microsoft Surface 的屏幕数字化仪。
- 应用场景:开发多输入设备支持的交互式应用,如绘图软件或触控界面。
- QImage 新格式:
- 新增 RGBA64(4x16 位)格式支持,可从 PNG 和 TIFF 文件读取,并支持 OpenGL 上传/抓取。
- 应用场景:需要高色彩精度的图像处理应用,如专业图形编辑器。
- QGradient 预设:
- 集成基于 https://webgradients.com/ 的预定义渐变,简化 UI 设计。
- 应用场景:快速创建美观的 UI 渐变效果。
3. Qt Network 模块
- DTLS over UDP:
- 新增对 Datagram Transport Layer Security(DTLS)的支持,提供 UDP 上的安全通信。
- 应用场景:实时通信应用,如视频会议或游戏网络模块。
- ALPN 和 HTTP/2 支持:
- 在 macOS 和 iOS 的 Security Transport 后端中支持 ALPN(Application-Layer Protocol Negotiation)和 HTTP/2 协议协商。
- 应用场景:开发需要高效网络协议的现代 Web 应用。
- PKCS#8 支持:
- 通用 SSL 后端(WinRT 和 Secure Transport)支持 PKCS#8 格式,增强加密密钥管理。
- 应用场景:需要高安全性的网络通信,如金融应用。
- QPasswordDigestor:
- 新增命名空间,提供基于密码的密钥派生函数(如 PBKDF1 和 PBKDF2)。
- 应用场景:安全密码存储或密钥生成。
4. Qt QML 和 Qt Quick 模块
- ECMAScript 7 支持:
- QML 的 JavaScript 引擎升级到支持 ECMAScript 7,允许使用现代 JavaScript 特性(如
async/await)。 - 支持直接加载 ECMAScript 模块(
.mjs文件),通过QJSEngine::importModule()或 QML 导入。 - 应用场景:开发复杂的 QML 应用,集成现代 JavaScript 库。
- QML 的 JavaScript 引擎升级到支持 ECMAScript 7,允许使用现代 JavaScript 特性(如
- TableView 引入:
- Qt Quick 新增
TableView,支持多列显示,性能优于 Qt Quick Controls 1.x 的实现。 - 采用按需加载和委托重用机制,适合处理大数据表格。
- 应用场景:开发数据密集型应用,如报表工具或数据库前端。
- Qt Quick 新增
- 输入处理(Input Handlers):
- 原 Pointer Handlers 更名为 Input Handlers,成为 Qt Quick 的核心特性。
- 新增
HoverHandler(支持多层嵌套悬停检测)和增强的DragHandler(支持多点拖拽,如双指拖拽)。 - 应用场景:复杂交互 UI,如多点触控应用或手势控制界面。
- 预生成距离场缓存:
- 支持预生成字体距离场缓存,显著提升复杂字体(尤其是非拉丁字体)在嵌入式设备上的渲染性能。
- 应用场景:优化嵌入式设备上的 QML 应用启动时间。
- 性能优化:
5. Qt Quick Controls 2 增强
- Dial 控件新输入模式:
- 新增
inputMode属性,支持水平和垂直相对输入,减少操作跳跃感。 - 应用场景:精确控制场景,如音量调节或机械控制界面。
- 新增
- Control 和 Popup 改进:
- 新增
topInset、bottomInset、leftInset、rightInset属性,精细控制背景几何形状。 - 新增
implicit*Width和implicit*Height属性,简化复杂尺寸绑定。 - 应用场景:开发高度定制化的 UI 控件。
- 新增
- RangeSlider 增强:
- 新增
valueAt()函数和first.moved()、second.moved()信号,提升交互反馈。 - 应用场景:需要动态范围选择的 UI,如音视频编辑器。
- 新增
- Material 风格变体:
- 新增 Dense 变体,适合桌面平台,控件更小巧,字体更紧凑。
- 应用场景:开发紧凑型桌面应用界面。
6. Qt WebEngine 和 WebGL
- WebEngine 升级:
- 基于 Chromium 69,支持客户端 SSL 证书(从系统设置或 NSS 数据库读取)。
- 应用场景:开发安全的 Web 浏览器或嵌入式 Web 视图。
- Qt WebGL Streaming Plugin:
- 完全支持,允许将 Qt 应用的 UI 通过网络流式传输到现代浏览器。
- 应用场景:远程 UI 访问,如云端应用或远程调试工具。
7. Qt Virtual Keyboard
- 扩展接口:
- 新增虚拟键盘扩展接口,允许第三方创建自定义输入法,无需修改虚拟键盘核心。
- 应用场景:开发特定语言或行业专用的虚拟键盘。
- MyScript 手写识别:
- 支持 MyScript Superimposed 手写识别,可识别叠写、连写和分写文字。
- 新增越南语手写识别(T9 Write)及多种新语言布局(如阿尔巴尼亚语、印尼语等)。
- 应用场景:开发支持手写输入的嵌入式设备,如平板或工业控制面板。
8. Qt 3D 和嵌入式支持
- Qt 3D 性能优化:
- 显著提升了 Qt 3D 在嵌入式硬件上的性能,降低 CPU 使用率。
- 支持从文件中按名称或索引加载动画,优化节点创建和重新父化。
- 应用场景:开发 3D 可视化应用,如汽车仪表盘或工业仿真。
- 嵌入式设备优化:
- 改进字体渲染和 QML 引擎性能,特别适合低端嵌入式设备。
- 应用场景:IoT 和 IIoT 设备开发。
9. 新模块和平台支持
- Qt for Python:
- 完全支持(源于 PySide 项目),允许 Python 开发者使用 Qt 的 C++ API。
- 通过 PyPI 分发,简化安装和使用。
- 应用场景:快速原型开发或跨语言项目。
- Qt Remote Objects:
- 完全支持,简化 Qt 进程间通信(IPC),支持跨进程共享 QObject 的属性、信号和槽。
- 应用场景:分布式系统或多进程应用。
- Qt for WebAssembly(技术预览):
- 支持将 Qt 应用编译为 WebAssembly,运行在现代浏览器中。
- 应用场景:开发跨平台的 Web 应用。
10. 其他高级功能
- Qt Serial Bus:
- 新增虚拟 CAN 总线插件,支持无硬件仿真。
- 增强 CAN FD 支持,提升数据传输效率。
- 应用场景:汽车或工业自动化开发。
- Qt Location:
- 更新 MapboxGL 插件,支持内孔的地理多边形和路线分段。
- 应用场景:地理信息系统(GIS)或导航应用。
- Qt Creator 4.8:
- 与 Qt 5.12 同步发布,支持多语言调试和多会话调试。
- 应用场景:提高开发效率,适合复杂项目。
Qt 5.12.10 特定说明
- 补丁版本特性:
- 安装相关:
开发者如何利用高级功能
- 选择适合的功能:
- 如果开发嵌入式或 IoT 应用,重点使用 QML 性能优化、TableView 和预生成距离场缓存。
- 如果开发网络应用,优先考虑 DTLS、HTTP/2 和 WebGL Streaming Plugin。
- 如果需要跨语言支持,Qt for Python 是快速原型开发的理想选择。
- 配置环境:
- 在 Qt Creator 中,确保使用 MinGW 7.3.0(与 5.12.10 兼容)或 MSVC 2015/2017。
- 根据项目需求选择模块,如
qtcharts、qt3d等,避免安装不必要的组件。
- 参考文档:
注意事项
- 已知问题:
- 编译器兼容性:
- 许可要求:
- 开源版本使用 LGPLv3 或 GPLv3 许可,确保遵守开源义务(如动态链接或提供源码)。
- 性能优化:
- 利用 QML 引擎和 Qt 3D 的性能改进,特别适合资源受限的嵌入式设备。
示例:使用 TableView 创建高效表格
以下是一个简单的 QML 示例,展示如何使用 TableView 显示多列数据:
import QtQuick 2.12
import QtQuick.Controls 2.12
ApplicationWindow {
visible: true
width: 400
height: 300
TableView {
anchors.fill: parent
columnSpacing: 1
rowSpacing: 1
model: TableModel {
TableModelColumn { display: "name" }
TableModelColumn { display: "age" }
rows: [
{ name: "Alice", age: 25 },
{ name: "Bob", age: 30 },
{ name: "Charlie", age: 35 }
]
}
delegate: Rectangle {
implicitWidth: 100
implicitHeight: 30
border.color: "gray"
Text {
anchors.centerIn: parent
text: display
}
}
}
}
运行此代码将显示一个包含“姓名”和“年龄”两列的表格,展示 TableView 的高效性和灵活性。
总结
Qt 5.12.10 继承了 Qt 5.12 系列的强大高级功能,涵盖 CBOR 支持、QML 性能优化、TableView、Input Handlers、DTLS 网络安全、WebGL 流式传输等,特别适合嵌入式、IoT 和跨平台应用开发。开发者应根据项目需求选择相关模块,并参考官方文档和 Qt Creator 调试工具以充分利用这些特性。如需进一步代码示例或特定功能实现,请提供详细需求,我将提供定制化指导!
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)