在嵌入式开发的教学中,一般都是采用Qte 2.2 作为教学本台。但是因为版本太老。使用起来并不太方便。因此有时候会直接使用桌面版的qt 3.1来讲解平台。但是两种版本有细微的差别。学习的人非常容易搞混。特别是Qtopia 的x11版与Qt 3.1 大家用的都是g++作编译器。
因此有时会刻意只讲Qte 2.2 以免学员产生混乱,但有的情况非讲桌面QT不可。因此这里列一个对比表,以免学员搞混(实际上,还真的很多搞混,要不断强调才会分清楚)。
1.所用开发工具版本
qte 2.3 有
designer (ver 1.1) ,
uic (user interface complier)
qvfb(X11 FrameBuffer模拟器),
tmake (ver 1.11) 模板/Makefile 生成器
progen QT项目文件,生成器.
一般x11版安装在 /x86-qtopia/qt/bin 下面
qt 3.3 是Redhat 默认版本。
安装在/usr/lib/qt-3.3 目录下面
designer (
2.QT项目需要文件
一个QT项目通常需要
qtproject.pro (QT的项目文件)
Makefile(由pro生成)
main.cpp (主程序)
XXXX.ui (界面描述文件)
XXXX.h (由ui生成头文件)
XXXX.cpp (由ui生成源码文件)
也可以手工加入 *.h/*.cpp
(以下假设项目叫qt_calc)
0.运行qte 2.2 进先执行 . set-env
2.1.生成project 文件
qte2.2 (qt desinger 1.1 ): 用 progen > qt_calc.pro (它会扫描当前目录,把源码和头文件加入)
qt 3.1 (qt designer 3.3.6): 有两种方法,1.在qt designer 新建一个C++工程.(推荐)
2. 执行命令 qmake -o project
2.2 由pro生成Makefile
qte2.2 执行命令 tmake -o Makefile qt_calc.pro
其中LINK = gcc 要改成 LINK = g++
qt 3.1 执行命令 qmake -o Makefile qt_calc.pro
2.3.由uic 生成源代码,两者命令一样
uic -o qt_calc.h qt_calc.ui
uic -o qt_calc.cpp -i qt_calc.h qt_calc.ui
但是qt 3.1在makefile 中会自动这两句,并且把文件放入 .ui/下面。所以无需手工创建
2.4. 主程序 main.cpp
qte 2.2 要手工写
qt 3.1 可由designer 自动生成
2.5.编译都 是Make
make
2.6.designer 中singal与slot的联络机制
qte 2.2 是由MOUSE拖动完成
qt 3.1 是选择下拉列表,或在对象窗口的singal 而操作
2.7. slot 代码保护
qte 2.2 只能手工增加子类继承来进行保护
qt3.1 会将slot 代码单独列在同名的点h中,如 calcform.ui 会生成 calcform.ui.h.这文件
代码不会被 uic冲掉,并且可以在designer 中直接修改。
以下用表格来总结一下
|
qte 2.2
|
qt 3.1
|
Qt4
|
生成project
文件
|
progen > qt_calc.pro
|
qmake -o qt_calc.pro
|
qmake –project qt_calc.pro
|
由项目文件生成Makefile
|
tmake -o Makefile qt_calc.pro
|
qmake -o Makefile qt_calc.pro
|
qmake -makefile
|
由ui文件生成C++代码
|
uic
-o qt_calc.h qt_calc.ui
uic
-o qt_calc.cpp -i qt_calc.h qt_calc.ui
| |
主程序 main.cpp
|
手工生成
|
由Qt Designer 生成
|
由QtCreator自动生成
|
编译
|
make
|
make
|
make
|
designer 中singal与slot的联络机制
|
是由MOUSE拖动完成
|
选择下拉列表,或在对象窗口的singal 而操作
|
|
Slot方法代码保护
|
手工增加子类继承来进行保护
|
会将slot 代码单独列在同名的点h中,如 calcform.ui 会生成 calcform.ui.h.这文件
代码不会被 uic冲掉,并且可以在designer 中直接修改。
|
在项目目录下,隐藏目录.ui建立 ui_xxxx.h文件,所有slot代码写在隐藏文件后
|
阅读(1941) | 评论(0) | 转发(0) |