Qt跨平台开发框架概览
Qt是什么
很多人一想到Qt,就想到GUI程序开发,将Qt定义为一个C++ GUI库。确实,用Qt可以很方便的进行GUI程序开发,但GUI开发只是Qt的一部分。维基百科中对Qt的定义是
Qt是一个跨平台的C++应用程序开发框架。
Qt最鲜明的特点是它的跨平台性。目前Qt几乎支持常见的所有系统,包括Windows,MacOS,Linux,Android,iOS,BSD等等。只要不依赖平台相关的特性和API,一份代码可以在其所支持的所有平台编译运行。我刚解除Qt时对这一点并没有很深的体会,直到有一天我未修改一行代码,便将我的一个Windows程序运行到了Android上,除了由于界面大小未做处理导致看上去有些问题外,功能完全正常。利用Qt强大的跨平台性,我们可以很方便的写出兼容多个平台的软件。
另一个特点就是Qt是一个框架。Qt中提供了大量的模块,其中仅有一部分模块是和GUI开发相关的,其他的模块提供了包括数据库,网络,多线程等在内的功能的跨平台支持。很多人认为学习Qt就是为了GUI开发,但实际上,我们在进行非GUI程序,甚至是用其他C++ GUI库的开发时,都可以考虑使用Qt的这些模块提供的功能。
现在在Qt的官网上,Qt的定义又有了新的改变。
Qt不仅是一个跨平台的软件开发工具包——更是一个科技战略。它能帮您实现快速与低成本的设计、开发、部署及维护,同时能在不同设备上实现无差别的用户体验。
具体为什么是一个科技战略,我现在也理解不深,或许随着更加深入地学习,会对这个有新的认识。
前生今世
Qt是由奇趣科技的两个创始人在1991年开始开发的。在之后的十几年内,经历了多次公司改名,期间被诺基亚和Digia相继收购,可以说是命途坎坷,不过这并没有影响到Qt的发展,Qt从1995年正式推出到现在版本更新没有明显的断层(参考Qt version history),足以证明其生命力的顽强。到目前为止,Qt已经退出了5个大版本,从最新的Qt 5在2012年发布之后,一直稳定在以半年为一个周期退出一个小版本的更新迭代中。Qt 6预计会在Qt 5.14,也就是2020年发布。
Qt目前在市场上有一定的使用率,比较出名的大公司推出的产品包括KDE,YY语音,WPS,VLC等,也有不少优秀的个人开发者开发的小工具都使用了Qt进行开发,如Snipaste等。
授权
Qt的授权有过一段比较混乱的历史,使用过包括GPL,QPL等。目前Qt主要以商业授权和LGPL授权对外开放。我们在使用时需要注意相应授权的规则。