2008-05-04

QT初体验

最近用QT开发自用词典,包括日韩、韩日、中英、英中、日日、英英词典,词汇量一定要全,有时间加TTS发音和屏幕取词功能。我需要日韩互相查询,英中互相查询,日语和英语每个单词的详细解释功能。我平时一般用金山词霸和广辞苑,偶尔查询网上的日韩词典。
这次日语词典选择了广辞苑,词汇量庞大,基本上没有查不到的。英汉/汉中词典选择了金山词霸里的简明英中词典,英语辞典选择了金山词霸里的美国传统词典,现在用金山词霸也就用这2个辞典。日韩/韩日选择了一个日本人开发的词典(KJDict)里的词库,日韩互查比较方便,很多词汇都一对一对应。有了这些词库,基本可以放弃其他词典了。

本来打算用MFC做,但后来知道QT,大概看了一下例子和文档,马上喜欢QT了。比起MFC、GTK的编程风格,QT 编程风格比较让人容易看懂,QString、QList、QMap、QFile、QRegExp功能强大易于使用,不直接用指针也可以做大部分事情,很像Java编程。尤其支持UTF-8良好,文本处理能力强,非常符合这个多语言词典。

目前花了半个月时间完成了主要词库转换、索引创建、词汇查询、基本界面,整体感觉良好,下面简单地总结一下我对QT的感受。

优点:
1. 入门容易、学习成本低。我以前主要做过PHP、Java、Perl、JavaScript这些非GUI编程,了解基本概念后就可以边查文档边写程序了。如果用MFC,可能要花更多时间去学习。
2. 跨平台效果好。本来是Linux下的工具库,在Windows下默认观感也不错。
3. 工具包数量多。该有的基本都有,大部分应用基本不需要自己实现功能了,看API直接调用就可以。
4. OPEN SOURCE。有些功能若有特殊需求,可以模仿源代码自己动手实现。我这个小程序排序有特殊需求,用QT提供的qSort无法完成。我就在qSort基础上追加了特殊处理。(qSort用goto语句实现了quick sort算法。)
5. 不需要虚拟环境,发布程序时带QT的几个dll文件(大部分程序只需要QtCore4.dll和QtGui4.dll)就可以。

缺点:
1. Windows上搭建开发环境比较麻烦。虽然用DevC++不需要自己编译QT库,但调试方面和VC没法比。官方没有提供用VC编译的二进制文件,只好自己动手编译了。而且QT各版本设置方法都不一样,以前版本要打一个补丁才可以用VC编译,最新版本不需要,可以直接编译。
2. QT Designer不好用,离真正可见即所得差距很大。不过用QT Designer控件属性显示功能,分析各控件的属性还是蛮不错。
评论
cauc_dg 2008-06-09
支持Qt,关注中
mathgl 2008-06-02
robbin 写道
jjcang 写道
mathgl 写道
wxWidgets需要为每个widget都指明ID 这个比较啰嗦. 我后来写了一个类似wxPython的wx.NewId()来解决这个问题.
.wxWidgets需要的lib太多, 如果是单独编译生成一堆.lib,要link还要找上半天。
不过胜在license好, 文档丰富, 第三方语言支持够多


wx编译的时候有选项可以只生成一个大lib的。
wx的license好,加上wxpython做gui基本无敌了。


wxPython还有一个可视化所见即所得的IDE编程工具:boa-constructor,用来开发桌面应用程序太方便了。

http://boa-constructor.sourceforge.net/


boa貌似停了很久了。。我现在用的比较多的是 wx-glade,不过很多人不喜欢它的强制使用layout.
另外当导出.cpp文件的时候 如果在vc打开需要转码. 不然编译会报错
mathgl 2008-06-02
现在我只用 wxPython. 做一般的应用也够了。除非要很特殊的效果
robbin 2008-06-01
jjcang 写道
mathgl 写道
wxWidgets需要为每个widget都指明ID 这个比较啰嗦. 我后来写了一个类似wxPython的wx.NewId()来解决这个问题.
.wxWidgets需要的lib太多, 如果是单独编译生成一堆.lib,要link还要找上半天。
不过胜在license好, 文档丰富, 第三方语言支持够多


wx编译的时候有选项可以只生成一个大lib的。
wx的license好,加上wxpython做gui基本无敌了。


wxPython还有一个可视化所见即所得的IDE编程工具:boa-constructor,用来开发桌面应用程序太方便了。

http://boa-constructor.sourceforge.net/
liangguanhui 2008-06-01
Qt, wxWidgets 都不错
jjcang 2008-05-30
mathgl 写道
wxWidgets需要为每个widget都指明ID 这个比较啰嗦. 我后来写了一个类似wxPython的wx.NewId()来解决这个问题.
.wxWidgets需要的lib太多, 如果是单独编译生成一堆.lib,要link还要找上半天。
不过胜在license好, 文档丰富, 第三方语言支持够多


wx编译的时候有选项可以只生成一个大lib的。
wx的license好,加上wxpython做gui基本无敌了。
zjumty 2008-05-30
Qt的那个公司提供了一个VC2005的插件, 开发起来非常方便, 不过是商业软件, 要付费的!
mathgl 2008-05-29
Qt相对比较简单, 只要用qmake, 基本上所需的库都能自动link了。wxwidget如果不用
monolithic 模式的, 要自己link一堆lib,
以前我都是用自带的sample来修改的,实在不想费劲去找那些lib.
luolonghao 2008-05-28
xuby 写道
1. Windows上搭建开发环境比较麻烦。虽然用DevC++不需要自己编译QT库,但调试方面和VC没法比。官方没有提供用VC编译的二进制文件,只好自己动手编译了。而且QT各版本设置方法都不一样,以前版本要打一个补丁才可以用VC编译,最新版本不需要,可以直接编译。
×××××××××××××××××××××××××××××××××××××××
为什么不用VC来编译调试呢?很方便的。
说实话Qt和MFC的差别,可以认为相当于Windows XP和DOS1.0的差别。


可能我没表达清楚,我就用VC编译调试的。
luolonghao 2008-05-28
neora 写道
wxWidgets也是个不错的选择,使用上比MFC还是要优秀很多,代码风格也非常出色。跟QT比同样跨平台,缺省控件外观更Native一些。


Qt也在Windows上非常Native。
neora 2008-05-27
mathgl 写道
wxWidgets需要为每个widget都指明ID 这个比较啰嗦. 我后来写了一个类似wxPython的wx.NewId()来解决这个问题.
.wxWidgets需要的lib太多, 如果是单独编译生成一堆.lib,要link还要找上半天。
不过胜在license好, 文档丰富, 第三方语言支持够多

Qt的依赖不多?我倒是认为Qt要比wxWidgets还要累赘。
mathgl 2008-05-27
wxWidgets需要为每个widget都指明ID 这个比较啰嗦. 我后来写了一个类似wxPython的wx.NewId()来解决这个问题.
.wxWidgets需要的lib太多, 如果是单独编译生成一堆.lib,要link还要找上半天。
不过胜在license好, 文档丰富, 第三方语言支持够多
xuby 2008-05-26
1. Windows上搭建开发环境比较麻烦。虽然用DevC++不需要自己编译QT库,但调试方面和VC没法比。官方没有提供用VC编译的二进制文件,只好自己动手编译了。而且QT各版本设置方法都不一样,以前版本要打一个补丁才可以用VC编译,最新版本不需要,可以直接编译。
×××××××××××××××××××××××××××××××××××××××
为什么不用VC来编译调试呢?很方便的。
说实话Qt和MFC的差别,可以认为相当于Windows XP和DOS1.0的差别。
neora 2008-05-26
wxWidgets也是个不错的选择,使用上比MFC还是要优秀很多,代码风格也非常出色。跟QT比同样跨平台,缺省控件外观更Native一些。
laoshi 2008-05-26
luolonghao 写道
Eastsun 写道
前天搞定了在Netbeans6.1下编译运行Qt项目,还没进一步尝试
不过初步印象觉得Qt4的组织结构与Swing挺像的,只不过消息传递机制不同(比Swing貌似更好)
其命名方式比丑陋的STL库好多了,比较符合JAVA中的习惯。


Swing程序没写过,以前写过一点Android程序,QT的GUI库比Android GUI库还好理解。
熟悉Java后觉得STL命名方式真的很丑陋。


如此,直接用java好了,干嘛非要用C++。
luolonghao 2008-05-21
第一个可用版本完成并正在使用中,在Windows XP和2003上运行良好,下面LINK里有几张截图。

http://luolonghao.javaeye.com/admin/blogs/194639
mathgl 2008-05-20
qt和gtk的消息处理其实很像。。都有个signal..一个slot
都是用macro实现..

不过qt的安装和部署貌似比gtk好些.
weicanhuang 2008-05-09
觉得swing事件好烦琐,比较喜欢gtk方式的。
luolonghao 2008-05-06
Eastsun 写道
前天搞定了在Netbeans6.1下编译运行Qt项目,还没进一步尝试
不过初步印象觉得Qt4的组织结构与Swing挺像的,只不过消息传递机制不同(比Swing貌似更好)
其命名方式比丑陋的STL库好多了,比较符合JAVA中的习惯。


Swing程序没写过,以前写过一点Android程序,QT的GUI库比Android GUI库还好理解。
熟悉Java后觉得STL命名方式真的很丑陋。
Eastsun 2008-05-06
前天搞定了在Netbeans6.1下编译运行Qt项目,还没进一步尝试
不过初步印象觉得Qt4的组织结构与Swing挺像的,只不过消息传递机制不同(比Swing貌似更好)
其命名方式比丑陋的STL库好多了,比较符合JAVA中的习惯。
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

luolonghao
搜索本博客
最近加入圈子
最新评论