![]() |
|
Spaces home Cheng Meng's Small TalkProfileFriendsBlogMore ![]() | ![]() |
There are no categories in use.
|
Cheng Meng's Small Talk7/20/2007 公告本来还想两岸三地,狡兔三窟,同步更新,但是实在太麻烦了……虽然Live Space和blogspot都可以用email更新,但是通过email更新后格式上老是出一点问题,每次都要一个一个调整,干脆放弃这儿了。如果有人想看我的blog,请转道去 My Blog at Scinese 广告一下。Scinese是个不错的服务,用得是Wordpress系统,这倒也算了,这年头Wordpress不稀罕,听说Drupal更好。值得大书特书的是Scinese提供了直接写LaTeX的插件,虽然不是非常完美。Wordpress.org也有这个功能,但考虑到它是GFW重点关照的对象,还是用国内的Scinese吧。 同时我还有一个blogspot,鉴于Blogger目前还被GFW关小黑屋中,也懒得更新了。 6/22/2007 初试Qt昨天一腔热血地编译了Qt 4,编译完才想起可以去下一个Open Source Edition的binary直接来用,大概被俄国同志无私奉献的精神感染了…… 顺手装上了一个VS2005的Qt插件。一开始老是出错,而且都只出一行错误信息:找不到头文件。如果代码里有Qt类需要moc出场,就会出另一行:找不到moc。检查了环境变量,没有问题。用qmake生成vcproj,表现良好,说明问题出在VS2005上。昨天折腾了一下午,百思不得其解,不得不感叹微软的产品都像谜一般迷人。 今天早上起来继续钻研,终于发现这回错怪微软了,是我设置的不对。因为是自己编译的版本,所以VS的Qt插件找不到Qt在哪儿,需要手动在选项里指定。当时还迷惑了一会,写上了Qt的二进制代码所在的文件夹$(QTDIR)\bin,实际上只要写$(QTDIR)就可以了。 经过了这么多磨难,终于可以顺顺当当的在VS里用Qt了。感觉上所有GUI库都有些相似之处,基本的控件或者叫Widget(但两者其实不是一个范畴),通过一些控制布局的组件组合起来,然后关键之处就是事件驱动机制。标准C++在这方面可谓一穷二白,各个GUI库在这一点上分道扬镳。比如MFC用的是臭名昭著的Macro,Qt表面上看起来好像也是Macro,实际上对语言进行了扩展,也就是Qt的招牌组件moc(即元对象编译器,Meta Object Compiler),引入了某种反射(Reflection)机制,有些地方叫introspective(自省),总之就是增强了对象的运行时类型信息。此外,一般C++编译器的多态实现方法对GUI编程并不是很合适,所以顺带也要自力更生出一套多态机制来。由此可以理解为什么几乎所有的Framework都要自己造一套类型系统,让所有类都继承一个叫*object(MFC是CObject,GTK+是gobject,Qt可以想象是QObject。要是叫中国的一帮狂热民族主义程序员来做,估计会弄成TaoObject,或者太极Object……)的抽象类。归根到底,还是因为标准C++的类型系统太菜了,太static了,碰到需要来一点动态类型的场合就没辙。 6/20/2007 Compling Qt 4.3.0 in a rainy afternoon这个标题分为两段:技术的,冰冷的前半段和容易被误认为略带一点小资气息的后半段。下午的雨下得无法无天,全过程完美的体现了夏季雷阵雨的特征。我坐在桌前,被一种莫名其妙的空虚感侵袭,决定折磨一下我的电脑,于是上网下了Qt4。 下面要开始谈一点技术内容。大家都知道Qt是一个非常优秀的GUI库,这么说不免有点片面,事实上它是一个Framework,像.NET Framework 2.0,Java Spring一样的Framework。但是和一身铜臭的.NET,Java不同,Qt略略带有一些开源色彩。首先当然是因为KDE用了Qt,大家也就一厢情愿的把Qt归到开源软件里了。其次是Qt确实有一个Open Source版本(可以想象功能上会打点折扣)。对于盗版精神深入骨髓的中国人和 俄罗斯人来说,虽然Open Source很好让人心安理得,但是如果能D到一个商业版当然更好。Qt Underground。这个网站的标题已经揭示了它罪恶的本质。 最后谈谈编后感(注:编,编译也)。 这个玩意是我编译过的最大的软件,编译后源码加各种lib,dll居然有近2GB之多,编译时间也长得吓人,光configure就不下半小时。泡一杯茶,然后看着nmake上气不接下气得调用cl干活,屏幕上漆黑丑陋的cmd窗口不停得滚动,听着外面单调的雨声,我的不知从何而来的空虚感也消失了。所 以大家以后无聊的时候,不妨去下一个boost或者linux kernel编译一下。言归正传,编译前要做一些必要的改动,来配合该死的VS2005SP1,为了不让技术细节充斥这个页面,我决定只放个链接 ,是一位高手的Qt 4.2.3编后感,对4.3.0版本也适用。 |
||||||||||||||||
|
|