Qt初体验

来源:互联网 发布:软件编程职业培训 编辑:程序博客网 时间:2024/04/29 18:26

最近在利用闲暇时间研究 Qt ,大概有 3 周了,看过了官网的 white paper 并浏览了一遍 <C++ GUI Programming with Qt 4, 2nd Edition> 。总的来说,感触还是很深的,所以今天想写点东西,作为对 Qt 初体验的记录。

 

    本人作为一个 MFC 老古董(如果你关注本博的话,你是知道的,汗~),发现研究 Qt 是一件非常令人赏心悦目的事情。那感觉,就像你逛完了集美家具城看到一堆国产风格的家具后突然走进宜家的卖场一样。我并不是说宜家的家具有多么好,只不过宜家家具代表的北欧风格和家具的设计思路和国产的比较起来是那么的不同,让人印象深刻。可能都是来自北欧的缘故吧, Qt 的设计和宜家家具的设计都让我感到了那股北欧的简洁、质朴、某些地方又非常巧妙的风格。感谢北欧几个国家的人民,为我们带来了安徒生童话、 Nokia 手机、 ABBA 乐队 …… 当然还有 Qt 。

   

    喜欢 Qt ,当然还是从它的 Signals & Slots 开始。这个概念的提出是让人非常钦佩的。如果你写过 10 万行代码,仔细想一下,除了用于计算和处理事务的代码外,其它的代码都是在干什么的?没错,你写了 X 个响应 Windows 消息的函数,调用了 Y 次成员变量的方法,执行了 Z 个回调函数 …… 你不过是在通过不同的方法与对象或某段代码沟通,让它们去执行某些代码而已。这个沟通的过程,有时候是非常麻烦的,甚至需要调整程序的构架和实现。在 MFC 中,当你不得不一次又一次继承、修改 Message Map ,并为代码的高耦合性和重复性头疼不已时,是否想到过别的解决方案呢?对于纯 OO 的编程来说,每个对象执行一些特定的操作,所有的对象通过沟通来共同执行所有的操作,完成整个软件的功能。在 Qt 里,Signals & Slots 是 Objects 之间完美的沟通方式,它允许所有继承 QObject 的子类们随心所欲的沟通,即使在不同的线程中。知道每次当我想到这里的时候是什么心情吗?我要给 Eirik鼓掌,大声地,长时间地鼓掌 ……

 

    只有一个好的点子是不够的,当你研究 Qt 源代码时就会发现,为实现一个好的点子,通常要付出艰辛的努力。 Let’s make things happen. 不知各位听到这句话时一般有什么反应。Haavard 和 Eirik 即使在没挣到 1 分钱而需要老婆养活的那几年也能把 Qt 这个事业坚持下来,并坚持了将近 20 年。这份执着更让人敬佩。有时候静下心来想一想,我们中国人好像是太聪明了,有时候缺乏那种执着和愚钝。当然,这跟国情也有关系,在中国,本土企业想做个世界级的 ISV 太难了,想盈利都很难(网游除外),更不用提开源软件了。那些优秀的程序员和软件从业者,难道中国真的没有适合你们大展拳脚的土壤吗?

 

    言归正传,再说回 Qt 的特色。与 MFC 对比起来,你会发现 Qt 的设计是那么的直白。很多地方的解决方案是你第一次就想到的那一种。感觉在 Qt 中,没人会觉得你的想法简单。关键在于你能把问题解决。经过了 10 几年和无数个平台的洗礼,简单的事情就没那么简单了。 Keep It Simple & Stupid (KISS) ,有的时候,我们想得太多了。

 

    关于 Signals & Slots 我想再多说一句。在做木工活时,你知道一个好工具的重要性。它直接决定了你的工作是不是很辛苦,和能做出的东西是什么样的。 Signals & Slots 在 Qt 中就是那个先进的工具,有了它,很多事情就不一样了,整个 Qt 的构架也不一样了。可以看出,对于一个公司或一款软件来说,一个优秀的系统级程序员是一笔多么宝贵的财富。

 

    今天先写到这里,我的下面几篇文章将围绕一个 Qt 程序展开,我会分几步写成一个类似 Qt Demo 的界面程序。在这个过程中,我会将 Qt 中的一些特色做个介绍,同时我会与 MFC中的某些概念进行对比。有兴趣的 TX ,请关注本博。


转载:http://blog.csdn.net/woshixingaaa/article/details/5789581

原创粉丝点击