设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
学习使用QT除了C++外,最好要了解QT的特性 ...
返回列表
查看:
5927
|
回复:
6
学习使用QT除了C++外,最好要了解QT的特性
[复制链接]
stormful
stormful
当前离线
积分
70
IP卡
狗仔卡
发表于 2003-8-18 18:51:44
|
显示全部楼层
|
阅读模式
学习使用QT除了C++外,最好要了解QT的特性。
1、signal和slot是必须理解的。否则看QT的帮助文档都成问题。
2、QT的property特性倒不是必需的。不过看看,很有意思。
3、QT由于是跨平台SDK。因此,它对event的处理并不像MFC或XAPI那样明显。但最好能对event filter有一个清晰的概念。这种filter机制可以把定制代码hook到具体的widget中,有时在简化编程上能起到巨大的作用。
4、QObject中的每个函数都是必须仔细研究的。至少,要对那个带parent的构造函数的含有理解清楚。由于QT在GUI的建立上经常要使用多层布局,最好不要手动去delete QObject的派生类。使用带parent的构造函数,QObject会自动释放所有child对象。
5、在QT中有非常强烈的布局概念。仔细研究研究,很快就会创造出非常漂亮的界面。
6、QT在绘制窗体的时候提倡程序员使用他的风格机制,而不是向Windows那样随心所欲的绘制。QT把标准窗体拆分成各个组件,然后按部分进行绘制。QT的风格机制还提供了很多窗体尺寸的信息。当然,你可以写一个自己的风格,并安装在QT中。
7、QTimer是个非常有用的类。由于signal和slot机制基本上就是callback机制,在大量是有时,可能导致递归。QTimer除了能产生定时外,它的令一个重要的任务就是可以抛出一个在空闲时执行的signal,具体函数名我记不清楚了,看看QTimer稳当。一般情况下,跑出signal的时间参数是0。
理解了这些内容,应该能开发出不错的QT应用。应该还有其他一些非常有个性的特点,但我一时也记不清了。
不过要开发QT最好还是使用KDevelop来开发。因为QT在实现signal/slot和property的过程中,使用了一个预编译机制。这个预编译器的名字叫moc。KDevelop会自动把头文件用moc进行处理,来产生另外的一个cpp原文件,它实现了QObject的一些虚函数和声明了一些静态变量。在初学QT编程的时候,最好不要在cpp源文件中声明具有signal/slot的QObject子类。因为,KDevelop并不负责检查cpp文件,在这种情况下要么自己手动执行moc,要么修改Makefile.am。总之,会造成混淆。
KDE SDK是在QT上发展的一个桌面SDK。在Widget层面上他的扩展并不大。主要在于action和一些effect上的扩展。比如对于toolbar上的button,KDE的效果明显好于QT。不过,如果只是用QT开发,可以把这些代码copy过来。写KDe程序必须对目录组织逻辑非常了解,否则在发布应用的时候会非常困难。
KDE和QT在i18n上基本上是一致的。显示中文最好使用po文件来定义。
QT是一种非常容易上手的SDK,它提供了非常多的辅助类。在图形文件的支持上尤其突出。在QT下使用gif格式非常容易。
学习QT最好从QT的基本特性上着手,然后逐步发展的QT的整个框架风格。KDe的cvs上的qt-copy里有QT的Linux下的大量的源代码。可以帮助你理解QT的功能。其实这些代码的价值是非常巨大的。不禁在QT上,在Linux下的很多开发上,参考这些代码的价值都是无法估量的。
还有,除了在界面上现实中文,有时可能要处理文件级的中文。QT的decoder相关类可以非常好的完成这些工作。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2003-8-18 21:52:12
|
显示全部楼层
呵呵,这么好的东东,埋没在一大堆贴子中太可惜了。分割出来,也好让大家共享嘛。
回复
支持
反对
使用道具
举报
显身卡
stormful
stormful
当前离线
积分
70
IP卡
狗仔卡
楼主
|
发表于 2003-8-18 21:55:42
|
显示全部楼层
艾。吓我一跳。呵呵,突然贴子没了。还以为说了什么不该说的。
回复
支持
反对
使用道具
举报
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2003-8-18 23:24:25
|
显示全部楼层
不好意思,让兄弟受惊了。
兄弟为论坛提供了这样的好东东,感谢都来不及,怎么可能删除?我这个当版主的要是如此糊涂,恐怕早就被炒鱿鱼了。哈哈。。。
以后此类的贴子多多益善,兄弟有多少水平,放心灌水就是。
回复
支持
反对
使用道具
举报
显身卡
cavendish
cavendish
当前离线
积分
201
IP卡
狗仔卡
发表于 2003-8-19 08:57:01
|
显示全部楼层
最初由 stormful 发表
不过要开发QT最好还是使用KDevelop来开发。
如果只学Qt的话,kdevelop是可以不用的
ide有时候会影响你对一个东西的思考
建议多看看qmake的文档
自己谢谢pro文件
你对makefile的理解会更多一些
不过楼主的文章确实不错
signal,slot,property都还是要好好看的
qsa里面这些东西都是很有用的
回复
支持
反对
使用道具
举报
显身卡
matrixreloaded
matrixreloaded
当前离线
积分
12
IP卡
狗仔卡
发表于 2003-9-15 08:14:52
|
显示全部楼层
要学Qt,如果你有好的C++背景,学起来不难。 是个好东西,写GUI非常方便。
回复
支持
反对
使用道具
举报
显身卡
Sworder
Sworder
当前离线
积分
935
IP卡
狗仔卡
发表于 2003-9-16 09:11:50
|
显示全部楼层
嘿嘿。。。我就是这样的,用QT SDK+EMACS,搞定!
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表