浅谈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++的面向对象的框架
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.写在最后