一、前语 说到Qt,不能不说到C++,这门巨大的言语。因为其面向对象的编程思维和峻峭的学习曲线,一开端学习起来很是费劲。Qt从QT4开端根本封装了许多C++的东西库和界面库,而且支撑跨渠道,这是它最大的优势。比较于陈旧的MFC和运用C#的WPF来说,我更喜爱Qt来进行C++的界面规划,这也是我从头开端捡起Qt学习之路的原因。
说完了感触和学习的原因,就开端介绍Qt5了。我这儿只做简略的介绍,重要的仍是在学习进程中领会Qt的编程逻辑和规划思维。
Qt,率直来说,并不仅仅一个界面库,他是C++编程思维的集大成者。它是得到完善的C++应用程序结构。运用Qt,在必定程度上你取得的是一个“一站式”、“全方位”的处理方案,STL。string、XML、数据库、网络这些零星的功用都包括在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 第一版于 1991 年由 Trolltech (奇趣科技)发布。后来在 2008 年,Nokia 斥资 1.5 亿美元收买 TrollTech,将 Qt 应用于 Symbian 程序开发。2012 年 8 月 9 日,Nokia 将 Qt 以 400 万欧元的价格出售给 Digia。
伴随着 Qt,一向有两种授权协议:商业授权以及开源授权。在 Qt 的前期版别,商业授权包括一些开源授权不供给的组件,可是在近期版别则不存在这个问题。以往人们对 Qt 的开源授权多有诟病。前期版别的 Qt 运用与 GPL 不兼容的协议授权,这直接导致了 KDE 与 GNOME 的战役(因为 Linux 运用 GPL 协议发布,GPL 协议具有传染性,作为 Linux 桌面环境的 KDE 却是根据与 GPL 不兼容的 Qt 开发,这就不恪守 GPL 协议)。不过,现在 Qt 的开源版别运用的是 GPLv3 以及 LGPL 协议。这意味着,你能够将 Qt 作为一个库连接到一个闭源软件里边。能够说,Qt 协议的争议现已不存在了。
回到顶部(go to top)
二、Qt的装置与装备2.1 Qt的装置
上面是两种Qt,第一种是运用mingw编译和调试开发的Qt,第二种(红线中)是运用msvc也便是vs调试和编译的Qt。开端学习的主张装置第一种,自带gcc编译器和gdb调试器。装置进程就不说了,一路绿灯就行,装置完之后的状况如下图。
2.2Qt的项目创立
一向往下,中心进程便是自己改一下项目的姓名和文件姓名,直到呈现下面的图,便是创立完成了。
上图是创立好的工程,这样便是能够运转的。
2.3 Qt的装备这儿说一下mingw版别的装备,此外msvc版别的Qt的编译器和调试器都是msvc(我的详细版别是MSVC2013)。
我的是32bit,然后一切的编译器和调试器都是套件自带的,不必另行下载。
好了,Qt的开端作业做好了,就能够开端学习了,就先到这儿。
no pains ,no gains. 给自己加油,为未来斗争。