目录
Qt,一个神奇而又强大的库,凝聚了大量攻城狮的心血与智慧。一个技术的了解,我们通常是了解他能做啥,然后是怎么做的。下面我们先来了解下Qt能做啥。先来段维基百科的解释:
什么是Qt?
Qt是一个面向桌面,嵌入式和移动的跨平台应用程序开发框架。支持的平台包括Linux,OS X,Windows,VxWorks,QNX,Android,iOS,BlackBerry,Sailfish OS等。
Qt本身不是一种编程语言。它是一个用C ++编写的框架。预处理器MOC(元对象编译器)用于扩展C ++语言,具有信号和槽等功能。在编译步骤之前,MOC解析用Qt-extended C ++编写的源文件,并从中生成符合标准的C ++源代码。因此,框架本身和使用它的应用程序/库可以由任何符合标准的C ++编译器(如Clang,GCC,ICC,MinGW和MSVC)编译。
提炼几个关键词:Qt是一个跨平台的C++开发框架。我们依次聊下这三个关键词:C++、跨平台、开发框架。
C++
C++进一步扩充和完善了C语言,是一种面向对象的程序设计语言。然而,系统中的一些事件处理很容易破坏面向对象思想(可参考MFC、wxWidget等的事件处理)。而Qt的做法是使用信号槽机制,完美解决事件处理与面向对象代码的问题。
跨平台
跨平台一直是Qt的重点,很多程序开发都只是把Qt作为跨平台的GUI开发库。其实Qt能做的远不止这些。
Qt的跨平台不同于Java的跨平台。Java跨平台的原因:半编译,半解释,一次编译,到处使用。而Qt跨平台是一次编写,到处使用,即Qt代码可以在各个平台编译,但也需要在各个平台编译一次。Qt跨平台的实现就是用宏。简单的说就是将各个平台的接口都封装起来,然后用宏判断当前是什么系统,哪些代码需要参入编译。
既然Qt把系统接口都封装了一遍,那么Qt能做什么就好说了。系统能做的Qt都能做。来一张图说明Qt能做啥,后面的数据是对应《C++ GUI Qt 4 编程》的章节。(如有遗漏或错误,欢迎指出)
开发框架
框架,呃,这个怎么说呢,只可意会不可言传。以后有想法了再补充吧。
不过Qt的面向对象思想真的很到位。看看Qt的源代码,或者仅看下头文件给出的接口设计就能有些收获。
学习都是从模仿开始。尝试写写Qt风格的类吧。
最后来看看Qt框架的扩展:
Qt的扩展主要是插件。同时对于脚本的支持也让它有能快速应对复杂业务场景的能力。
Qt的插件实现技术就是动态库的动态加载。
它支持多种类型的插件 (分类很重要。没分类的库多了灵活性,但同时也多了耦合性)
主要有:UI插件、样式表插件、数据库插件、图片插件等。插件让Qt功能更强大,也更灵活。
同时也可以自定义插件以实现一些业务需求。
盗张图对一些跨平台库对比:
再来个别人的对比链接:https://blog.csdn.net/guoxiaoqian8028/article/details/18772273
发现wxWidgets运行速度比Qt快,我都想去尝试一下了 >_<
来源:https://blog.csdn.net/xiaock2/article/details/100063047