浅谈Qt与C++的关系

1.Qt简介

什么是Qt呢?在Qt官网对于Qt的解释是这样的

Qt is a full development framework with tools designed to streamline the creation of applications and user interfaces for desktop, embedded, and mobile platforms.

字面意思就是它是一个完整的开发框架,其内在的工具旨在简化桌面、嵌入式和移动平台的应用程序和用户界面的创建。
在百度百科上对Qt的介绍是这样的,重点是简介其作为基于C++的面向对象的框架

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r1OvbsC1-1584091542584)(Qt%E4%B8%ADQML%E4%B8%8EC++%E7%9A%84%E4%BA%A4%E4%BA%92.assets/qt.png)]

2.Qt与C++

从C++的角度分析Qt,我们会发现,Qt通过内省数据的机制,实现了与许多现代语言的交互特点,这是通过使用Qt中的基础类QObject来实现的,在Qt中,通过内省数据传递值原数据再至类运行的运行维护方式,构建了整个运行流程。原生的C++是不会完成这些事情的,所以Qt更方便了动态查询对象信息以及属性。

在Qt中最大的特点就是信号与槽的机制,Qt使用源对象信息实现了信号与槽的回调绑定。每个信号能够连接任意数量的槽函数或者其它的信号。当一个信号从一个对象实例从发送后,会调用连接信号的槽函数。发送信号的对象不需要知道接收槽对象的任何信息,反之亦然。这一机制可以创建复用性非常高的组件,并减少组件之间的依赖。

Qt中的内省特性也用于创建动态属性的绑定,QML是一种描述性的脚本语音,以JavaScript语言作为主要编程控制。通过内省特性使得QML可以调用暴露的C++对象实例,并且可以从JavaScript中调用C++函数。除了绑定Qt C++, 绑定标准的JavaScript也是一种非常流行的方式,此外还有Qt对于其他语言的的绑定,如对Python的绑定,叫做PyQt。

3.Qt的跨平台应用

基于C++的Qt拥有一切C++的特性,在Qt中也可以使用C++开发跨平台的应用程序,Qt C++在不同的操作系统上提供了一套平台抽象,允许开发者专注于手上的任务,不需要你去了解如何在不同的操作系统上打开一个文件。这意味着你可以在Windows,OS X和Linux重复编译相同的代码,不用去过份考虑不同平台上的适配问题,Qt会自动帮你解决这些。最终保持本地构建的应用程序与目标平台的窗口风格上看起来一致。随着移动平台的桌面更新,Qt也提供相同的代码在不同的移动平台上编译,例如IOS,Android,Jolla,BlackBerry,Ubuntu Phone,Arm等。这样不仅仅是代码可以重用,开发者的技能也可以重用。由于Qt的这些特性,让的了解Qt的团队比只专注于单平台特定技能的团队可以接触更多的平台,也因为Qt的灵活性,团队可以使用相同的技术创建不同平台的组件。

关于编码的问题。对于所有平台,Qt提供了一套基本类,例如支持完整unicode编码的字符串,链表容器,向量容器,缓冲容器。它也提供了目标平台的通用主循环抽象和跨平台的线程支持,网络支持。Qt的主旨是为Qt的开发者提供所有必须的功能。对于特定领域的任务,例如本地库接口,Qt也提供了一些帮助类来使得这些操作更加简单。

4.写在最后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UUzb2L0h-1584091542585)(Qt%E4%B8%ADQML%E4%B8%8EC++%E7%9A%84%E4%BA%A4%E4%BA%92.assets/no%20picture%20say%20jb.gif)]
在这里插入图片描述
在这里插入图片描述

发布了43 篇原创文章 · 获赞 7 · 访问量 9024

猜你喜欢

转载自blog.csdn.net/qq_41488943/article/details/104845443