Qt是一款C++语言的跨平台UI框架。开发它的是一家挪威公司,原名奇趣科技,2008年被诺基亚收购后改名Qt软件,2016年5月2日独立在纳斯达克旗下赫尔辛基证券交易所上市,径名Qt公司。
同许多行业一样,Qt在浏览器的发展史上据有重要的一席之地。KDE的K内核便是用Qt编写而成,它的后裔WebKit和Blink统治了今天的排版引擎。奇趣科技的邻居Opera软件公司则使用Qt完成了Opera浏览器的Elektra和Presto内核版本。尽管出于浏览器对性能的极致追求,他们后来脱离Qt框架走向原生,但也足以证明Qt框架的高质量和远见卓识。
不过Qt官方的WebView解决方案倒是命途多舛。先是Safari火爆以后,重写了QtWebKit,吸引了Arora和Rekonq来投。待到Chromium兴起之后,推出了QtWebEngine,再次升级到Blink内核。对于性能要求不是很高的小众浏览器,直接采用Qt官方的WebView也还算是不错的选择。
除了诺基亚收购的那几年,Qt在它的大部分时期只是个小公司,小公司开发大框架意味着,它没有办法像大公司那样羊毛出在猪身上,而必须为自己找到一个商业模式。Qt选择的商业模式是开源闭源双轨制,即使用Qt开发的开源软件,必须遵守GPL(KDE的要求)或LGPL(诺基亚的要求)同样开源,而如果想保持自己的闭源代码,就需要购买Qt的商业授权。这在维持了必要的开源生态情况下,也可以通过闭源生态找到一条财路。但Qt的争议也来源于此,由于许可协议的争端一直持续到2005年在所有平台释出GPL授权,GNU社群自己建立了基于C的GTK+框架以及基于GTK+框架的GNOME软件环境,与Qt支持下的KDE相竞争。Linux生态圈的许多大公司也不愿看到Qt一家独大而给予大力支持。因此虽然KDE至今拥有包括Linus本人在内的许多支持者,但却难以攻占任何一家主流Linux发行版。
另一个不利因素是C++在Linux社群传统上的二等公民地位。因为C++在Windows和macOS有受到原厂支持的UI解决方案,Qt对于跨平台的执念使其难以与微软和苹果竞争。在Electron兴起之前,Linux本身恰恰是最需要Qt的操作系统,而Qt在Linux上一直未得到足够的支持和投资,仅仅是作为一个开源软件发祥地存在。这期间诞生过以Qt作为主力开发框架的Symbian 3、MeeGo、Ubuntu Touch,但无一例外都失败了。
Qt的核心产品,依然只不过是一个三方UI库。它没有自己的抽象语法树,也没有自己的编译器,因此在抽象层级上受到一定限制,无法从功能和性能上比肩原生开发。直至今日,Qt仍然是小公司和在IT上成本受限的传统公司快速验证创意,低成本实现跨平台的不错选择,但难以渗透于对功能或性能敏感的前沿领域。