• 【QT】入门心法


    💦三大特性

    💦特性一

    软件需求是不断增长的,但是开发团队的能力却不能这样不断地增长!此时QT6工具和API可以让设计者和开发人员创建更多的需求。

    💦特性二

    新一代的用户应用体验:构建2D和3D和谐的应用程序——使用设计器和对开发者更友好的工具,以及强大的QML语言和灵活的图形架构。

    💦特性三

    无限扩展性: 从微处理器到超级计算机,QT6和他庞大的生态体系提供了所有需求,包括设计、开发和部署以及产品线管理。前端创建美丽的界面,后端创建强大的功能实现。不管是前端还是后端都是基于一种统一代码来针对所有硬件、操作系统。

    • QT6版本是专门为IoT开发新增了跨平台功能
    • QT6版本新增了2D和3D混合编程,适应未来VR/AR/MR视频界面编程
    • QT6支持C++17标准,提供了强大的后台编程能力

    💦QT框架构成

    💦C++ API

    💦类似于JavaScript编程的QT Quick(QML)

    💦UI设计器解决方案

    手机应用开发和嵌入式设备开发建议使用QT Quick
    ERP桌面应用开发(大型标准工业类型应用、只运行在桌面、跨平台并可以融入底层平台)建议使用QT Widgets。

    💦实现策略

    Qt 是一个著名的 C++ 应用程序框架。你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件。使用 Qt,在一定程度上你获得的是一个“一站式”的解决方案:不再需要研究 STL,不再需要 C++ 的,不再需要到处去找解析 XML、连接数据库、访问网络的各种第三方库,因为 Qt 自己内置了这些技术。

    Qt 是一个跨平台的框架。跨平台 GUI 通常有三种实现策略:

    • API 映射:API 映射是说,界面库使用同一套 API,将其映射到不同的底层平台上面。大体相当于将不同平台的 API 提取公共部分。比如说,将 Windows 平台上的按钮控件和 Mac OS 上的按钮组件都取名为 Button。当你使用 Button 时,如果在 Windows 平台上,则编译成按钮控件;如果在 Mac OS 上,则编译成按钮组件。这么做的好处是,所有组件都是原始平台自有的,外观和原生平台一致;缺点是,编写库代码的时候需要大量工作用于适配不同平台,并且,只能提取相同部分的 API。比如 Mac OS 的文本框自带拼写检测,但是 Windows 上面没有,则不能提供该功能。这种策略的典型代表是 wxWidgets。这也是一个标准的 C++ 库,和 Qt 一样庞大。它的语法看上去和 MFC 类似,有大量的宏。据说,一个 MFC 程序员可以很容易的转换到 wxWidgets 上面来。
    • API 模拟:前面提到,API 映射会“缺失”不同平台的特定功能,而 API 模拟则是解决这一问题。不同平台的有差异 API,将使用工具库自己的代码用于模拟出来。按照前面的例子,Mac OS 上的文本框有拼写检测,但是 Windows 的没有。那么,工具库自己提供一个拼写检测算法,让 Windows 的文本框也有相同的功能。API 模拟的典型代表是 wine —— 一个 Linux 上面的 Windows 模拟器。它将大部分 Win32 API 在 Linux 上面模拟了出来,让 Linux 可以通过 wine 运行 Windows 程序。由此可以看出,API 模拟最大优点是,应用程序无需重新编译,即可运行到特定平台上。另外一个例子是微软提供的 DirectX,这个开发库将屏蔽掉不同显卡硬件所提供的具体功能。使用这个库,你无需担心硬件之间的差异,如果有的显卡没有提供该种功能,SDK 会使用软件的方式加以实现。(关于举例,可以参考文末一段精彩的讨论。)
    • GUI 模拟:任何平台都提供了图形绘制函数,例如画点、画线、画面等。有些工具库利用这些基本函数,在不同绘制出自己的组件,这就是 GUI 模拟。GUI 模拟的工作量无疑是很大的,因为需要使用最基本的绘图函数将所有组件画出来;并且这种绘制很难保证和原生组件一模一样。但是,这一代价带来的优势是,可以很方便的修改组件的外观——只要修改组件绘制函数即可。很多跨平台的 GUI 库都是使用的这种策略,例如 gtk+(这是一个 C 语言的图形界面库。使用 C 语言很优雅地实现了面向对象程序设计。不过,这也同样带来了一个问题——使用大量的类型转换的宏来模拟多态,并且它的函数名一般都比较长,使用下划线分割单词,看上去和 Linux 如出一辙。gtk+ 并不是模拟的原生界面,而有它自己的风格,所以有时候就会和操作系统的界面格格不入。),Swing 以及我们的 Qt。

    Qt 和 wxWidgets 一样,也是一个标准的 C++ 库。但是它的语法类似于 Java 的 Swing,十分清晰,而且使用信号槽(signal/slot)机制,让程序看起来很明白——这也是很多人优先选择 Qt 的一个很重要的原因。不过,所谓“成也萧何,败也萧何”。这种机制虽然很清楚,但是它所带来的后果是你需要使用 Qt 的 moc 对程序进行预处理,才能够再使用标准的 make 或者 nmake 进行正常的编译,并且信号槽的调用要比普通的函数调用慢大约一个数量级(Qt 4 文档中说明该数据,但 Qt 5 尚未有官方说明)。Qt 的界面也不是原生风格的,尽管 Qt 使用 style 机制十分巧妙地模拟了原生界面。另外值得一提的是,Qt 不仅仅能够运行在桌面环境中,还可以运行在嵌入式平台以及手机平台。

    💦优点

    • 跨平台,几乎支持所有的平台
    • 接口简单,容易上手,学习QT框架对学习其他框架有参考意义
    • 一定程度上简化了内存回收机制
    • 开发效率高,能够快速的构建应用程序
    • 有很好的社区氛围,市场份额在缓慢上升
    • 可以进行嵌入式开发
  • 相关阅读:
    C++要笑着学:stack和queue
    springboot Socket 通信
    企业电子招标采购系统源码java 版本 Spring Cloud + Spring Boot
    逆功率保护装置
    iwebsec--命令执行漏洞
    计算机网络-网络层详细讲解
    springcloud_2021.0.3学习笔记:nacos单机模式支持mysql
    索引的数据结构
    MFC Windows 程序设计[239]之托盘通知展示(附源码)
    技术分享 | 如何使用代理配置快速定位接口测试脚本问题?
  • 原文地址:https://blog.csdn.net/qq_36477513/article/details/126110627