`
robinsoncrusoe
  • 浏览: 748713 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

Qt 的昨天,今天,明天

    博客分类:
  • web
阅读更多
本文的作者 toartist 是一名 Qt 开发者,非常了解 Qt 的版本历史和演进,ifanr 邀请到他写了一篇 Qt 的回顾和展望文章。此外,作者也将参与诺基亚开发竞赛,一起期待他的作品在 N8 上有出色的表现吧。


2010 年 10 月 21 日,诺基亚宣布,决定将 Qt 作为 Symbian 和 meego 唯一的应用程序开发框架。

那么人们不禁要问,Qt 是什么,为什么受到诺基亚如此重视,要将其作为自己手机平台的“唯一”开发框架?



Qt 为什么叫 Qt,不叫OT,不叫MT呢?

我们要先追溯到上个世纪末一个关于 Qt 的鲜为人知的典故。话说在北欧挪威苦寒之地,这地方一年只有两个月的太阳,平时都是极昼,所以那边人因为晒太阳比较少,于是都是金黄的头发,蓝色的眼睛,皮肤白白黄毛特多。于是难得晒太阳就是件很享受的事情,就有两个无聊的大学生很舒服地躺在桌子上嗮太阳,正嗮得舒服,两小伙想了,闲着也是闲着,干嘛不接点私活呢,于是就去接了个给一个什么公司用 C++ 开发一个 Unix 用户界面的程序,没成想钱收得不多那公司还要求移植到别的系统别的电脑下,这两费尽千辛万苦终于捣出了一个可以跨平台的程序。

其实这程序很小,就是一个按钮,难得的是它能在好多系统下都能按,还是个C++ 的按钮,后来他们把程序放到了网上,有人觉得有意思就参与一起开发了,那会儿 IT 人士过得都很滋润啊,于是没事就做做,之后很快就发展成了一套完整的 C++ 类库。为什么大家叫它 Qt ,大概是因为很可爱,很 Cute(QT的读音)吧。

那么那两位大学生呢,时光流转,几年过去了,大学生也不再是大学生了,他们想 Qt 发展得不错了,干脆开家公司卖它吧,于是他们在奥斯陆合伙开了家公司叫 Trolltech,专门开发 Qt ,一开始不顺利,怎么也卖不出去,原来 Qt 在开源社区经过一帮牛人的锻造,整得太高级了,一般人都用不动啊,于是他们尝试将接口简化,变成傻瓜式的开发工具,这也就是 Qt 一直宣传的优点:

Code Less, Create More and deploy everywhere.

就这样,一家做医疗仪器的公司有个技术总监在初步研读了 Qt 的源码后,终于让他们卖出了第一个 Qt 的商业许可证。所以啊这伟大的产品都是经过很多磨难才慢慢形成的,而且要走得长远,必须一开始就有很好的理念,看看同时期的 MFC 吧,真是气死了多少 C++ 程序员啊,先天不足,难以为继。后来还有个小插曲,当那位技术总监年老色衰被公司赶出山门,Trolltech 收留了他并奉为上宾,由此可以看到 Qt 创始人的一丝人性光辉以及能够想象得到的当年 Trolltech 和谐的公司文化。

那么由于 Qt 在开源社区走了那么一遭,与开源社区结下了不解之缘,免费开源的软件都可以免费使用 Qt ,于是 Qt 继续在开源社区发挥无限的潜力,创就了一个又一个伟大的开源软件,其中就包括了一个巨无霸,一整个图形系统的 KDE 。看到这里,聪明的人就领悟到了,Qt 还有另一个极大的优势呢,便是有众多的开源支持,使得开发更加容易。

为什么诺基亚要收购 Qt ?

说到这里,大家还是不明白为什么诺基亚要收购 Qt , 因为这时候 Qt 还只是在桌面平台上混,不紧不慢地发展了好几年,PDA 开始出来了,风靡一时,本着deploy everywehre 的原则,PDA 也是要跨的,于是开始开发嵌入设备版本的Qt ,在这里 Qt 又一次借助了开源社区的力量,整合了一套嵌入式的 KDE ,便是嵌入式程序员都知道的 Qtopia 。这个伟大的产品甚至从某种程度上超越了 Qt 本身,国内的老 Qt 程序员们倒有一大半是与其打交道的,其普及之广是其他嵌入式操作系统所无法企及的。于是乎正遭到 iPhone 巨大打击的手机业大哥大诺基亚便是因为 Qtopia 而对 Qt 青睐有加,正好同在北欧的挪威芬兰一家亲,收购了 Qt 一起嗮太阳,看美女。




那么诺基亚收购 TrollTech 之后,让 Qt 又发生了多大变化呢,说到这里,诺基亚不愧为大哥大,国际大公司,出手便是不凡,从 4.5 开始,首先完全整合了Qt 嵌入式版本,并加入了 Symbian 支持,针对 Qt 运行速度不够快的缺点大力优化底层,让 Qt 性能有了质一般的提升,提高了一倍以上的速度,同时提出了个先进的 Kinetic 的项目计划,也就是当前 4.7 里的 QtQuick ,说到这个,就要提到微软为 .net 大力打造的先进的 UI 组件 WPF 了,设计与代码分离,数据驱动式的开发,令美工与程序员可以无缝合作,这东西让微软得意了好几年。不过由笔者看来, Qt 的这个组件更加引人注目,原因有三,


•基于 C++ 完全开源的开发模式令众多喜欢刨根问底的 C++ 开发者受益非浅,热情高涨。


•加入了强化了的 javascript 作为动态语言契合了当前流行的开发模式,而且 javascript 这种类 C 式语法也令 C++ 程序员平滑过渡,比起其他类似 Ruby,python 之类的更加应用自如,而额外加入的数据绑定,与 C++ 扩展无缝集成等等方面比起WPF也是更加地方便易用。真正做到了快速开发而不失程序的高效。


•由于 Qt 的跨平台性,QtQuick 在未来将有着更为广阔的应用,除了诺基亚主打的手机,平板电脑平台,QtQuick 由于脚本文件式的开发方式甚至可以用到 web 应用程序上,当真是潜力无限,笔者作为一名开发者,深深地要向 QtQuick 的设计者们致以崇高的敬意。


方才介绍了诺基亚为 Qt 带来的最重要的东西,那么还有什么呢,让笔者为您一一道来。Qt 4.5 加入了一个叫 phonon 的组件,这个东西来自 KDE 的一个开源项目,强大的开源社区又为 Qt 贡献了一个设计优良的库,在此之上开发多媒体程序只需几十行代码便可搞定,Qt 一直以来所追求的精神又一次得到了完美的体现,但诺基亚的开发人员却不满足,又在 4.6 加入了一个 multimedia 的库,用以更底层的多媒体开发。真是面面俱到,令 Qt 的程序员们为之疯狂。

还有一个不得不提到的 webkit,这个在 Apple 的浏览器上大放异彩的开源浏览器引擎,Qt 理所当然地不能放过,Qt 版的 webkit 令 Qt 的开发者无论是打造自己的浏览器还是做与 web 相关的程序都只需轻轻几行代码便可做到,笔者不禁要感叹,有了 Qt ,写代码真正是变成了乐趣。






而在手机方面,诺基亚做得更多,一个 Mobility 的 Qt 组件正逐渐完善,它封装了诺基亚手机操作系统的底层,提供了一个统一的接口操作手机的各个方面,包括摄像头,短信,以及智能手机的各种传感器,在这方面 Qt 又超越了 google 犹抱琵琶半遮面的 Android 以及 Apple 完全封闭的 iPhone 的开发框架。所以拥有巨大开源势力支持的 Qt 的野心又岂止在诺基亚本家,Qt 有两个分支版本针对 iPhone 的 Qt-iPhone 和针对 Andriod 的 Android-Lighthouse 正在悄然无息地开发之中。

到了这里,笔者作为一名 C++ 开发者不禁要窃喜,正当 Android 选择了 java,而 iPhone 使用着 object-c ,我们借助伟大的 Qt ,必将凌驾于所有平台之上。

从过去看到现在,那么我们再展望下在诺基亚强大实力支持下的 Qt 又将有着如何辉煌的未来吧。

诺基亚已经为 Qt 设置了 Roadmap,其它全方位的支持笔者就不多说了,除了一直承诺的代码优化在开源社区的支持下会做得更好以外,下一代的 widget 将架构在 QtQuick 之上,一直认为 Qt GUI 并无新意的程序员们可以看到 Qt 的努力了。这方面 Qt 并不逊于 iPhone 和 Android 的开发框架,未来也将做得更好,这点从 QtQuick 大胆而又优秀的设计上就可以看到,Qt 将 UI 变成了一门艺术。如果你是一名 C++ 程序员,Qt 就是你梦想中的开发工具,能为你的开发效率提高何止 5 倍。而 Qt 也不仅仅属于 C++,早在诺基亚收购之前就有了java 版的接口,python 的接口等等。那么正在面对众多混乱的开发工具而迷茫无助的你,还有什么理由拒绝由诺基亚发出的 Qt 邀请?

分享到:
评论
1 楼 xiagu1 2011-03-09  
qt已经卖了,以后难说了

相关推荐

    QT萤石代码 QT萤石代码 QT萤石代码

    QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码QT萤石代码...

    QT皮肤生成器 QT皮肤生成器

    QT皮肤生成器QT皮肤生成器QT皮肤生成器QT皮肤QT皮肤生成器QT皮肤生成器QT皮肤生成器QT皮肤生成器QT皮肤生成器QT皮肤生成器QT皮肤生成器QT皮肤生成器QT皮肤生成器QT皮肤生成器QT皮肤生成器QT皮肤生成器QT皮肤生成器QT...

    Qt及Qt Quick开发实战精解.zip_QT_QT 开发_Qt Quick_Quick_qt开发

    Qt及Qt Quick开发实战精解Qt and Qt Quick Development Practical Digestion

    Qt实现自定义侧边栏滑动

    Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏滑动Qt侧边栏...

    [Qt]Qt Creator汉化方法 qt汉化包

    【Qt Creator汉化方法】 Qt Creator是一款强大的跨平台集成开发环境(IDE),广泛用于C++和Qt应用程序的开发。为了方便中国用户使用,Qt Creator提供了汉化包,使其界面能够显示为中文。以下是一个详细的Qt Creator...

    QT中文参考手册(QT help)

    关于Qt Qt的版本 常见问题解答 Window系统特性注释 如何购买Qt 安装 如何学习Qt 教程一, 教程二 实例 循序渐进实例 白皮书 Qt 3.0的关键特征 修改历史 从Qt 2.x移植到Qt 3.x 简体中文汉化日志 Qt...

    QT学习教程PDF(《Qt Creator快速入门》;C++ GUI Qt4 编程(第二版) ;Qt及Qt+Quick开发实战精解)

    QT,全称Qt,是一个跨平台的C++图形用户界面应用程序开发框架,由挪威的Trolltech公司(现为The Qt Company)开发,被广泛应用于桌面应用、移动应用以及嵌入式系统中。Qt Creator是Qt开发环境的主要IDE(集成开发...

    Qt镜像源_qt_mirror

    Qt是一个流行的开源跨平台应用程序开发框架,用于创建桌面、移动和嵌入式设备的应用程序。在进行Qt开发时,我们经常需要安装Qt SDK,其中包括编译器、库、开发工具等。在线安装Qt时,使用Qt镜像源可以显著提高下载...

    Qt4.8.7及配套QtCreate5.0.3和MinGW4.8.2

    Qt4.8.7下载路径 http://download.qt.io/official_releases/qt/4.8/4.8.7/ 下载文件:qt-opensource-windows-x86-mingw482-4.8.7.exe 二、mingw版本选择 从Qt官网的wiki找到 与Qt4.8.7配套的mingw的版本是...

    Qt下实现WebServer的调用之qtsoap

    在Qt环境下,开发人员经常需要与各种网络服务进行交互,比如Web API或远程服务器。`Qtsoap`就是一种用于在Qt应用程序中实现SOAP(简单对象访问协议)通信的工具,它使得Qt应用能够轻松地调用WebServer上的服务。本文...

    Qt-Quick中文手册.rar_Qt Quick_Qt Quick Manual_qt 中文_qt参考手册_qt学习手册

    Qt quick编程手册,专业学习qt quick

    Qt及QtQuick开发实战精解高清PDF

    根据标题和描述中的信息,我们可以推断出这是一本关于Qt及Qt Quick开发的专业书籍。从标题“Qt及QtQuick开发实战精解高清PDF”可以得知,这本书主要介绍的是使用Qt框架进行软件开发的实战技巧和深入解析。 Qt是一个...

    Qt动态控件生成并布局

    Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局...

    QT帮助文档_中文版.rar_QT_qt 界面_qt帮助中文版_qt文档_中文版qt界面

    QT界面中文帮助文档,QT界面比MFC要好用

    将某个Qt4项目升级到Qt5遇到的问题

    Qt4 项目升级到 Qt5 遇到的问题 本文将介绍将 Qt4 项目升级到 Qt5 遇到的问题和解决方案。Qt5 已经发布了新的版本 Qt 5.0.1,我们可以将以前的 Qt4 项目升级到 Qt5,以减少系统中存在的多个 Qt 版本。 问题 1:Qt5...

    qt远程桌面控制 qt远程桌面控制

    QT远程桌面控制是一种基于Qt库实现的远程桌面访问解决方案,允许用户通过网络连接到另一台计算机,进行远程操控。Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于各种操作系统,包括Windows、Linux、...

    qt5版本log4qt

    **Qt5与Log4Qt** Qt5是一款广泛使用的跨平台应用程序开发框架,它提供了一整套C++库,用于创建图形用户界面和其他多种类型的软件。Log4Qt是针对Qt5设计的日志记录库,它是Apache Log4j的Qt版本,为Qt应用程序提供了...

    log4qt qt5版本

    《基于Qt5的log4qt库改进版》 在软件开发过程中,日志记录是必不可少的一个环节,它能够帮助开发者追踪程序运行状态,定位错误,优化性能。在Qt框架下,log4qt是一个广泛使用的日志记录库,它借鉴了Java的log4j设计...

    包含Qt5Core.dll Qt5Gui.dll Qt5Network.dll Qt5Svg.dll Qt5Widgets.dl

    包含Qt5Core.dll Qt5Gui.dll Qt5Network.dll Qt5Svg.dll Qt5Widgets.dl

    QtCharts_dev_for_Qt4.8.6.zip

    QtCharts是Qt库的一个扩展模块,专用于提供各种2D图表功能,使开发者能够创建丰富的数据可视化应用。在Qt 4.8.6版本中,虽然QtCharts并未作为官方核心组件,但可以通过此压缩包提供的开发资源进行集成和使用。这个...

Global site tag (gtag.js) - Google Analytics