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)或嵌入式设备开发。
    • 示例:可以用 QCborValueQCborStreamReader 处理 CBOR 数据,类似 JSON 的 QJsonDocument
  • QRegularExpression 增强
    • 新增 wildcardToRegularExpressionanchoredPattern 方法,简化通配符匹配和精确匹配的实现。
    • 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 库。
  • TableView 引入
    • Qt Quick 新增 TableView,支持多列显示,性能优于 Qt Quick Controls 1.x 的实现。
    • 采用按需加载和委托重用机制,适合处理大数据表格。
    • 应用场景:开发数据密集型应用,如报表工具或数据库前端。
  • 输入处理(Input Handlers)
    • 原 Pointer Handlers 更名为 Input Handlers,成为 Qt Quick 的核心特性。
    • 新增 HoverHandler(支持多层嵌套悬停检测)和增强的 DragHandler(支持多点拖拽,如双指拖拽)。
    • 应用场景:复杂交互 UI,如多点触控应用或手势控制界面。
  • 预生成距离场缓存
    • 支持预生成字体距离场缓存,显著提升复杂字体(尤其是非拉丁字体)在嵌入式设备上的渲染性能。
    • 应用场景:优化嵌入式设备上的 QML 应用启动时间。
  • 性能优化
    • QML 应用启动时间较 Qt 5.9 LTS 降低 52%,内存占用较 Qt 5.6 LTS 降低 80%。
    • 应用场景:开发资源受限的嵌入式或移动设备应用。
5. Qt Quick Controls 2 增强
  • Dial 控件新输入模式
    • 新增 inputMode 属性,支持水平和垂直相对输入,减少操作跳跃感。
    • 应用场景:精确控制场景,如音量调节或机械控制界面。
  • Control 和 Popup 改进
    • 新增 topInsetbottomInsetleftInsetrightInset 属性,精细控制背景几何形状。
    • 新增 implicit*Widthimplicit*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 特定说明

  • 补丁版本特性
    • Qt 5.12.10 是 Qt 5.12 LTS 系列的补丁版本,修复了超过 30 个 bug(相比 5.12.9),但未引入新功能。
    • 修复主要集中在稳定性、安全性及 macOS 兼容性问题。
    • 支持期限:Qt 5.12 LTS 支持至 2021 年 12 月,5.12.10 是倒数第二个补丁版本(最后一个为 5.12.12)。
  • 安装相关
    • 推荐使用离线安装包 qt-opensource-windows-x86-5.12.10.exe(约 3.7GB,发布于 2020-11-09)。
    • 可通过 Maintenance Tool 更新现有安装,但需确保安装程序为最新版本。

开发者如何利用高级功能

  1. 选择适合的功能
    • 如果开发嵌入式或 IoT 应用,重点使用 QML 性能优化、TableView 和预生成距离场缓存。
    • 如果开发网络应用,优先考虑 DTLS、HTTP/2 和 WebGL Streaming Plugin。
    • 如果需要跨语言支持,Qt for Python 是快速原型开发的理想选择。
  2. 配置环境
    • 在 Qt Creator 中,确保使用 MinGW 7.3.0(与 5.12.10 兼容)或 MSVC 2015/2017。
    • 根据项目需求选择模块,如 qtchartsqt3d 等,避免安装不必要的组件。
  3. 参考文档
    • 查阅 Qt 5.12 官方文档(https://doc.qt.io/qt-5.12/)获取 API 详情。
    • 查看 Qt Wiki 的新功能列表(https://wiki.qt.io/New_Features_in_Qt_5.12)。

注意事项

  • 已知问题
    • Qt 5.12.10 的已知问题可在 Qt Wiki 查看(https://wiki.qt.io/Qt_5.12.10_Known_Issues),包括 Windows、Linux 和 macOS 平台的特定问题。
  • 编译器兼容性
    • 推荐 MinGW 7.3.0 或 MSVC 2015/2017,Visual Studio 2022 需源码编译支持。
  • 许可要求
    • 开源版本使用 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 调试工具以充分利用这些特性。如需进一步代码示例或特定功能实现,请提供详细需求,我将提供定制化指导!

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐