QtEmbedded/Qtopia FAQ
上一篇 / 下一篇 2007-08-13 12:33:11 / 个人分类:嵌入式开发
Qt-X11/QtEmbedded/Qtopia及其他常见包的关系?木铎校园 BBS 社区Ia
mU?n
build Qtopia时经常能看到以下的包:木铎校园 BBS 社区l6I$n"[L-R1w
qt-x11-2.3.2
wY0L[:B4w b;K0qt-x11-3.3.x
1O#rm\w"eb-v;n0qte-2.3.x木铎校园 BBS 社区X8Afz!`
qtopia-2.x
#x%J9v U$Jb0tmake-1.3木铎校园 BBS 社区Xa@DxRD%q5oKJ
qmake, uic, moc
Q'i/D:z{@+z$r/m0...木铎校园 BBS 社区e0n{ ~+i6N
木铎校园 BBS 社区"j'la r4S!B&?!a+n
其中Qtopia编译依赖Qte;
2Z0|Q/@ d'k0qt-x11-2.3只与编译一些tool有关, 如uic,moc,qvfb..Qtopia并不依赖qt-x11;木铎校园 BBS 社区/] H%r*Pp]2N
qt -x11-3.3.x用来编译qtopia desktop(qtopia与桌面同步的工具)和i18n相关的lupdate、lrelease工具, 所以如果你configure qtopia的时候没有加-no-qtopiadesktop选项或者用到了-languages参数就得准备qt-x11-3.x了; 另外在phone版本中有一个modem模拟的工具叫做phonesim, 也依赖qt-x11-3.x编译,不过多数人是用不上的, 呵呵。
DsJILd0?s0木铎校园 BBS 社区J"F3h3x iC4D(y2QD
tmake用于生成Makefile文件, 用在qte应用上;
|&}us!C)]&J g&i0qmake包含在qtopia里, 用于为Qtopia应用生成Makefile文件;木铎校园 BBS 社区a%p)~I I*x8`
uic, moc,qvfb,qmake,tmake和designer使用的时候要注意版本,2.x, 3.x, 4.x之间是不兼容的, 但相同主版本号之间是兼容的,所以我们在build Qtopia过程中经常从qt-x11-2.3中拷贝现成的uic和moc供qte使用。
0[-F"g5ux|9O0编译过程中出现一些头文件找不到, 类未定义等等,很多时候是因为误使用了系统默认搜索路径下的uic等工具造成的。大家要注意这个问题
f7J$E` PI M0
+d&g7UK,N?#Vl2b0Qtopia/QtEmbedded版本对应关系?
k|^P] ^y0Qtopia1.7.0 / Qte 2.3.7木铎校园 BBS 社区y7?8F6s_
Qtopia2.1.1 / Qte 2.3.10
5y9HC3Q-]'E0Qtopia2.1.2 / Qte 2.3.11木铎校园 BBS 社区F'Z6@/m6uxg
Qtopia2.2.0 / Qte 2.3.12 (包含在qtopia2.2源码包中)
7A@2Q\Z%y0木铎校园 BBS 社区"y(IE"Cm IU
Qtopia/QtEmbedded相关源码包下载地址?木铎校园 BBS 社区ld&G{U
Qt/Qte:木铎校园 BBS 社区IgGm\1|
ftp://ftp.trolltech.com/qt/source
`J*T/QZ0ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/qt/source
9lYH I|f%pMC0
cB(M&uc VW0Qtopia(1.6-2.2):木铎校园 BBS 社区6l%sh)xO m ]u
ftp://ftp.trolltech.com/qtopia/source木铎校园 BBS 社区"b4\ [IE%?
ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/qtopia/source木铎校园 BBS 社区@!ThZDK
木铎校园 BBS 社区"H{ w'l_
tmake:木铎校园 BBS 社区/\V,dq M7F+E2h%n
ftp://ftp.trolltech.com/freebies/tmake木铎校园 BBS 社区L3Q+A];OuO8U^
ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/freebies/tmake木铎校园 BBS 社区Th^c-tM1A;{
^~L,Rc)W0我的QtEmbedded程序中的中文字符为什么显示成方块?
0F.[U,N3a"m0两个可能的原因:木铎校园 BBS 社区b[2M8_8D.]7B d
一是qte的库未编译进对中文textcodec的支持, 解决方案:修改qconfig-qpe.h, 去掉CODEC有关的宏, 重新configure和make木铎校园 BBS 社区%S7Ofq y4Oa8o[
木铎校园 BBS 社区'A(KOa qH/zl
二 是程序中选用的字体不是中文字体(默认的字体是Helvetica,没有中文), 需要在程序中指定一个中文字体, 如qte自带的unifont(这个字体大家普遍的看法是看上去像残废), qt4版本里新加入了文泉驿的unicode字体, 可以在源码包里找到,比较漂亮, 推荐。
af_$qKH g2J3s0
hK S\WU0如何把QtEmbedded程序移植为Qtopia程序?木铎校园 BBS 社区/Me9v!dNq!JBM
Qtopia里提供了简单的宏来创建主窗口、应用style等, 最主要的改变在main函数。木铎校园 BBS 社区A#Y4w$Hs ?
参考qtopia/src/applications/clock/main.cpp
+jl!HZ[1i MAf!p0--------------------------------------------------木铎校园 BBS 社区IzRk7MS ^
#include "mymainwindow.h"木铎校园 BBS 社区(o6y(O}3L!dmm4L i
#include <qtopia/qpeapplication.h>木铎校园 BBS 社区8}1AF6Vdv
QTOPIA_ADD_APPLICATION("myappname", "MyMainWindow")木铎校园 BBS 社区+C5v9|`R.|)C&}
QTOPIA_MAIN木铎校园 BBS 社区-kA4D5ZfD[
---------------------------------------------------木铎校园 BBS 社区:AqJo#Pq[.zi5R
这一步很简单把,cp过来改改类名和binary的名字就OK了。
~\V9MM5Xp@^h0需要注意的是你的mainwindow的构造函数要符合(QWidget*p, const char* name, int f)的形式(三个参数)
VM;f|?5XJ a0h E0
`y.rs4Qz6J\7G0相应的,修改pro文件。 参考qtopia/src/applications/clock/clock.pro木铎校园 BBS 社区V3@pNX*K7q
其中最重要的一行是 CONFIG+= qtopiaapp木铎校园 BBS 社区0v~9z#uL1O
这样编出来是quicklaunch插件程序(applications目录下的程序默认config是quichlaunch, 别的目录不是哦~)
Ms+^JbF4yY0
!Yv9F R l k0要想编成独立的应用, 加上这句:CONFIG -= buildQuicklaunch
ihF)j&}r!a.L&g+CrC0
;U9@(A$vM0大功告成!木铎校园 BBS 社区yc5a8w,ZV*D
K4i ^5hli ?9s0如何将自己的应用添加到qtopia桌面里?木铎校园 BBS 社区.KuQ-R3HR"{H
首先把你的应用修改成qtopia应用程序(见上一个问题)。木铎校园 BBS 社区+WQA:W0Apo
然后把你的程序cp到qtopia程序默认的搜索路径中:木铎校园 BBS 社区 Ka{/s/K o0H [A
应用程序放到SRCDIR/qtopia/image/opt/Qtopia/bin下;(后面的SRCDIR/qtopia/image/opt/Qtopia简写为"...")
~+xZy\8Eqdd0quicklaunch插件放到../plugins/application下。
"ItvD9O*MB0
'^5X8K5b!R"k{1w0假设你编译得到的quicklauncher插件叫libmybin.so, 则相应的需要在../bin下建立一个链接文件: ln -s quicklauncher mybin
M5x%Qp*B_9_WR0
h V qIYl6R5P{0另外,还需要创建一个desktop文件(找个现成的改改), 把这个desktop文件放到qtopia的
tq%[ s9N0../apps/Applications下。
jv Ov WhE5y2c0木铎校园 BBS 社区aZ#c,itI
desktop 文件里最重要的信息是关联的执行档名称和图标文件的名称。 执行档名称和上文中的mybin对应, 图标的话desktop文件里只写了一个文件的名字,但实际上qtopia去搜索的时候会到以执行档的名字命名的子目录去寻找该icon文件, 也就是.../pics/mybin/xxx.png。
Fa6C&}-J3lhz0
3WmH9B"\(MHB5f0以上环境都弄好后, 你进到Applications页面里就能看见自己的应用程序了。木铎校园 BBS 社区cOG:XAex0fmt
0T;Ps6L+M+Jb"OZz0如何设置Qtopia的字体?木铎校园 BBS 社区c r H7He$l.Y [#X-p;CY
2.x系列版本在运行时的$HOME/Settings/下有个qpe.conf文件, 其中的[Apperance]下的FontFamily字段设置字体, FontSize设置字号。木铎校园 BBS 社区|Jm5Y7NaN+\ t{
hh&P;F4W%tX#iCz0Qtopia 和Qte程序都会在运行时的$QTDIR/lib/fonts目录里搜索字体, 所以你要用的字体也要放在这个地方。 另外还要根据需要修改该目录下的fontdir文件。这个文件是字体(FontFamily, FontSize...)与实际的字体文件的映射, 要写正确才能找到字体文件, 所以不可马虎。
.e,w/R,pzi%}Mc0
n_ O:}#N0为什么QtEmbedded自带的例子无法编译通过?木铎校园 BBS 社区K&w1e&C*[{
在编译例子的时候经常会出现这样的提示信息,无法编译:
5jmd,E*L)dZu O0“#make木铎校园 BBS 社区AH:x)Y g+s
Some of the required modules (full-config) are not available.
\!N6P'a$U(chZ0Skipped.”
#W`2@-]S0lD0
P*x;RyW`!x5H0这是怎么回事呢?
2r1~G)Oc+j$qO(xK0我想大家应该知道qte的库可以通过修改qconfig来增删一些特性吧, 也就是说通过定义一些宏可以去掉qte库包含的class定义,以减小qte库的大小。 所以说不同的config下编译出来的qte库多数情况下是不兼容的。
%sbP ij Hu0
Sgf(\7n*w0大家可以从该例子的.pro文件中获得一些信息(比如aclock这个例子),在pro文件中往往会有这么一行:木铎校园 BBS 社区)?E5{k8A7pc
REQUIRES+=full-config木铎校园 BBS 社区Lg"Li9R&w s9F
这 句话表明,这个qte应用用到的类只有在full-config才能满足。 所以如果你用的是别的config选项干脆就不让你编译。 如果你非要编译也不是不可能,把这个限制去掉重新生成Makefile就可以了,不过很可能会出现undefined reference或者找不到类之类的错误, 大家要做好心理准备......木铎校园 BBS 社区&C|"sp;m;U3N
木铎校园 BBS 社区"\#|3FQ{h v!{mP"J&uit
要想成功编译qte的例子还有个方法是用-qconfig all参数configure QtEmbedded, 这样qte库包含所有的特性, 肯定什么例子都能编过去。
?g2S4^k0木铎校园 BBS 社区h;[\*s-Uo'\Y
如何裁减QtEmbedded库?木铎校园 BBS 社区ljkZ(y
QtEmbedded定义了一系列的features, 用
?~9b$O#Fu%j1Y d0#ifndef NO_XXX
+Ip B2K#DqR,x0#endif木铎校园 BBS 社区MmU+k0]%E!Zd
的方式把特性相关的代码包围在特定的宏里,这样如果定义了某个NO_XXX的宏,就是去掉了该特性, 从而达到减少编译的代码,进而减小libqte的大小的目的。木铎校园 BBS 社区#A-~#X1JV9@5l2f_
r%e0{%XK0你 在configure qte的时候有一个-qconfig xxx参数, 这个xxx指定的是包含features宏的头文件, 比如qtopia里带的qconfig-qpe.h就是专门为qtopia量身定制的宏定义文件, 该文件里去掉了qtopia未用到的feature(如打印等)。如果configure时不指定-qconfig参数,则会提示你从qte预先定义好的 qconfig中选择一个,如small/large/full, 这三项对应不同的qconfig-xxx文件, 每个文件包含不同的feature定义。 具体的位置在:$QTEDIR/src/tools/qconfig-xxx.h
l(`K5r!Dd0
5S+ma0wp0我们要裁减qte库最好是建立一个自己的qconfig-myconfig.h文件, 把自己的程序未用到的特性对应的宏定义在这个文件里。 configure qte的时候加-qconfig myconfig选项,这样就可以使用自己的feature定义文件了。木铎校园 BBS 社区u Mh"Ql+[q-a&t
木铎校园 BBS 社区/p nh+D8z P `!i
另外需要注意的一点是, feature之间有依赖关系,你disable某个特性很可能连带其他一些特性也被disable。 所以还要参看$QTEDIR/src/tools/qfeatures.h中对feature依赖关系的描述。木铎校园 BBS 社区Uq!ce1I n?8T
木铎校园 BBS 社区;w3`.u4[M
feature宏对应的功能参见文档:
i9[S C0P*{qBN&k8P0http://doc.trolltech.com/qtopia2.0/html/features.html木铎校园 BBS 社区2i%pWgMx _ y
5qBK+V abR ?"V0Good Luck!木铎校园 BBS 社区t'KY~w#^D
木铎校园 BBS 社区 u'XGfa2C%?
木铎校园 BBS 社区^3II6aE3|:e
如何改变qvfb桌面的默认颜色(绿色)?木铎校园 BBS 社区$|/CH.l2HK3|| W]
qte 2.x里提供的API:木铎校园 BBS 社区|b~/^2o7P,E
QWSServer::setDesktopBackground(const QColor&);
9X*SG:Uq8~%g_0QWSServer::setDesktopBackground(const QImage&);
\/md#n GP0木铎校园 BBS 社区:@2gF(mY*qV`8Q
qtopia core 4里提供的API:
D,C]{D,|^dx_i0QWSServer::setBackground(const QBrush&);
/GO |$x u t7k.a(OV0木铎校园 BBS 社区2T;fLoRDcA x1a6l
默认的颜色在源码的qwindowsystem_qws.cpp文件, QWSServer的构造函数里赋值,也可以直接去修改源码。
f cq4clE0
af"J\/P VP8gk$z0
z,dF3ZM+J0
build Qtopia时经常能看到以下的包:木铎校园 BBS 社区l6I$n"[L-R1w
qt-x11-2.3.2
wY0L[:B4w b;K0qt-x11-3.3.x
1O#rm\w"eb-v;n0qte-2.3.x木铎校园 BBS 社区X8Afz!`
qtopia-2.x
#x%J9v U$Jb0tmake-1.3木铎校园 BBS 社区Xa@DxRD%q5oKJ
qmake, uic, moc
Q'i/D:z{@+z$r/m0...木铎校园 BBS 社区e0n{ ~+i6N
木铎校园 BBS 社区"j'la r4S!B&?!a+n
其中Qtopia编译依赖Qte;
2Z0|Q/@ d'k0qt-x11-2.3只与编译一些tool有关, 如uic,moc,qvfb..Qtopia并不依赖qt-x11;木铎校园 BBS 社区/] H%r*Pp]2N
qt -x11-3.3.x用来编译qtopia desktop(qtopia与桌面同步的工具)和i18n相关的lupdate、lrelease工具, 所以如果你configure qtopia的时候没有加-no-qtopiadesktop选项或者用到了-languages参数就得准备qt-x11-3.x了; 另外在phone版本中有一个modem模拟的工具叫做phonesim, 也依赖qt-x11-3.x编译,不过多数人是用不上的, 呵呵。
DsJILd0?s0木铎校园 BBS 社区J"F3h3x iC4D(y2QD
tmake用于生成Makefile文件, 用在qte应用上;
|&}us!C)]&J g&i0qmake包含在qtopia里, 用于为Qtopia应用生成Makefile文件;木铎校园 BBS 社区a%p)~I I*x8`
uic, moc,qvfb,qmake,tmake和designer使用的时候要注意版本,2.x, 3.x, 4.x之间是不兼容的, 但相同主版本号之间是兼容的,所以我们在build Qtopia过程中经常从qt-x11-2.3中拷贝现成的uic和moc供qte使用。
0[-F"g5ux|9O0编译过程中出现一些头文件找不到, 类未定义等等,很多时候是因为误使用了系统默认搜索路径下的uic等工具造成的。大家要注意这个问题
f7J$E` PI M0
+d&g7UK,N?#Vl2b0Qtopia/QtEmbedded版本对应关系?
k|^P] ^y0Qtopia1.7.0 / Qte 2.3.7木铎校园 BBS 社区y7?8F6s_
Qtopia2.1.1 / Qte 2.3.10
5y9HC3Q-]'E0Qtopia2.1.2 / Qte 2.3.11木铎校园 BBS 社区F'Z6@/m6uxg
Qtopia2.2.0 / Qte 2.3.12 (包含在qtopia2.2源码包中)
7A@2Q\Z%y0木铎校园 BBS 社区"y(IE"Cm IU
Qtopia/QtEmbedded相关源码包下载地址?木铎校园 BBS 社区ld&G{U
Qt/Qte:木铎校园 BBS 社区IgGm\1|
ftp://ftp.trolltech.com/qt/source
`J*T/QZ0ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/qt/source
9lYH I|f%pMC0
cB(M&uc VW0Qtopia(1.6-2.2):木铎校园 BBS 社区6l%sh)xO m ]u
ftp://ftp.trolltech.com/qtopia/source木铎校园 BBS 社区"b4\ [IE%?
ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/qtopia/source木铎校园 BBS 社区@!ThZDK
木铎校园 BBS 社区"H{ w'l_
tmake:木铎校园 BBS 社区/\V,dq M7F+E2h%n
ftp://ftp.trolltech.com/freebies/tmake木铎校园 BBS 社区L3Q+A];OuO8U^
ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/freebies/tmake木铎校园 BBS 社区Th^c-tM1A;{
^~L,Rc)W0我的QtEmbedded程序中的中文字符为什么显示成方块?
0F.[U,N3a"m0两个可能的原因:木铎校园 BBS 社区b[2M8_8D.]7B d
一是qte的库未编译进对中文textcodec的支持, 解决方案:修改qconfig-qpe.h, 去掉CODEC有关的宏, 重新configure和make木铎校园 BBS 社区%S7Ofq y4Oa8o[
木铎校园 BBS 社区'A(KOa qH/zl
二 是程序中选用的字体不是中文字体(默认的字体是Helvetica,没有中文), 需要在程序中指定一个中文字体, 如qte自带的unifont(这个字体大家普遍的看法是看上去像残废), qt4版本里新加入了文泉驿的unicode字体, 可以在源码包里找到,比较漂亮, 推荐。
af_$qKH g2J3s0
hK S\WU0如何把QtEmbedded程序移植为Qtopia程序?木铎校园 BBS 社区/Me9v!dNq!JBM
Qtopia里提供了简单的宏来创建主窗口、应用style等, 最主要的改变在main函数。木铎校园 BBS 社区A#Y4w$Hs ?
参考qtopia/src/applications/clock/main.cpp
+jl!HZ[1i MAf!p0--------------------------------------------------木铎校园 BBS 社区IzRk7MS ^
#include "mymainwindow.h"木铎校园 BBS 社区(o6y(O}3L!dmm4L i
#include <qtopia/qpeapplication.h>木铎校园 BBS 社区8}1AF6Vdv
QTOPIA_ADD_APPLICATION("myappname", "MyMainWindow")木铎校园 BBS 社区+C5v9|`R.|)C&}
QTOPIA_MAIN木铎校园 BBS 社区-kA4D5ZfD[
---------------------------------------------------木铎校园 BBS 社区:AqJo#Pq[.zi5R
这一步很简单把,cp过来改改类名和binary的名字就OK了。
~\V9MM5Xp@^h0需要注意的是你的mainwindow的构造函数要符合(QWidget*p, const char* name, int f)的形式(三个参数)
VM;f|?5XJ a0h E0
`y.rs4Qz6J\7G0相应的,修改pro文件。 参考qtopia/src/applications/clock/clock.pro木铎校园 BBS 社区V3@pNX*K7q
其中最重要的一行是 CONFIG+= qtopiaapp木铎校园 BBS 社区0v~9z#uL1O
这样编出来是quicklaunch插件程序(applications目录下的程序默认config是quichlaunch, 别的目录不是哦~)
Ms+^JbF4yY0
!Yv9F R l k0要想编成独立的应用, 加上这句:CONFIG -= buildQuicklaunch
ihF)j&}r!a.L&g+CrC0
;U9@(A$vM0大功告成!木铎校园 BBS 社区yc5a8w,ZV*D
K4i ^5hli ?9s0如何将自己的应用添加到qtopia桌面里?木铎校园 BBS 社区.KuQ-R3HR"{H
首先把你的应用修改成qtopia应用程序(见上一个问题)。木铎校园 BBS 社区+WQA:W0Apo
然后把你的程序cp到qtopia程序默认的搜索路径中:木铎校园 BBS 社区 Ka{/s/K o0H [A
应用程序放到SRCDIR/qtopia/image/opt/Qtopia/bin下;(后面的SRCDIR/qtopia/image/opt/Qtopia简写为"...")
~+xZy\8Eqdd0quicklaunch插件放到../plugins/application下。
"ItvD9O*MB0
'^5X8K5b!R"k{1w0假设你编译得到的quicklauncher插件叫libmybin.so, 则相应的需要在../bin下建立一个链接文件: ln -s quicklauncher mybin
M5x%Qp*B_9_WR0
h V qIYl6R5P{0另外,还需要创建一个desktop文件(找个现成的改改), 把这个desktop文件放到qtopia的
tq%[ s9N0../apps/Applications下。
jv Ov WhE5y2c0木铎校园 BBS 社区aZ#c,itI
desktop 文件里最重要的信息是关联的执行档名称和图标文件的名称。 执行档名称和上文中的mybin对应, 图标的话desktop文件里只写了一个文件的名字,但实际上qtopia去搜索的时候会到以执行档的名字命名的子目录去寻找该icon文件, 也就是.../pics/mybin/xxx.png。
Fa6C&}-J3lhz0
3WmH9B"\(MHB5f0以上环境都弄好后, 你进到Applications页面里就能看见自己的应用程序了。木铎校园 BBS 社区cOG:XAex0fmt
0T;Ps6L+M+Jb"OZz0如何设置Qtopia的字体?木铎校园 BBS 社区c r H7He$l.Y [#X-p;CY
2.x系列版本在运行时的$HOME/Settings/下有个qpe.conf文件, 其中的[Apperance]下的FontFamily字段设置字体, FontSize设置字号。木铎校园 BBS 社区|Jm5Y7NaN+\ t{
hh&P;F4W%tX#iCz0Qtopia 和Qte程序都会在运行时的$QTDIR/lib/fonts目录里搜索字体, 所以你要用的字体也要放在这个地方。 另外还要根据需要修改该目录下的fontdir文件。这个文件是字体(FontFamily, FontSize...)与实际的字体文件的映射, 要写正确才能找到字体文件, 所以不可马虎。
.e,w/R,pzi%}Mc0
n_ O:}#N0为什么QtEmbedded自带的例子无法编译通过?木铎校园 BBS 社区K&w1e&C*[{
在编译例子的时候经常会出现这样的提示信息,无法编译:
5jmd,E*L)dZu O0“#make木铎校园 BBS 社区AH:x)Y g+s
Some of the required modules (full-config) are not available.
\!N6P'a$U(chZ0Skipped.”
#W`2@-]S0lD0
P*x;RyW`!x5H0这是怎么回事呢?
2r1~G)Oc+j$qO(xK0我想大家应该知道qte的库可以通过修改qconfig来增删一些特性吧, 也就是说通过定义一些宏可以去掉qte库包含的class定义,以减小qte库的大小。 所以说不同的config下编译出来的qte库多数情况下是不兼容的。
%sbP ij Hu0
Sgf(\7n*w0大家可以从该例子的.pro文件中获得一些信息(比如aclock这个例子),在pro文件中往往会有这么一行:木铎校园 BBS 社区)?E5{k8A7pc
REQUIRES+=full-config木铎校园 BBS 社区Lg"Li9R&w s9F
这 句话表明,这个qte应用用到的类只有在full-config才能满足。 所以如果你用的是别的config选项干脆就不让你编译。 如果你非要编译也不是不可能,把这个限制去掉重新生成Makefile就可以了,不过很可能会出现undefined reference或者找不到类之类的错误, 大家要做好心理准备......木铎校园 BBS 社区&C|"sp;m;U3N
木铎校园 BBS 社区"\#|3FQ{h v!{mP"J&uit
要想成功编译qte的例子还有个方法是用-qconfig all参数configure QtEmbedded, 这样qte库包含所有的特性, 肯定什么例子都能编过去。
?g2S4^k0木铎校园 BBS 社区h;[\*s-Uo'\Y
如何裁减QtEmbedded库?木铎校园 BBS 社区ljkZ(y
QtEmbedded定义了一系列的features, 用
?~9b$O#Fu%j1Y d0#ifndef NO_XXX
+Ip B2K#DqR,x0#endif木铎校园 BBS 社区MmU+k0]%E!Zd
的方式把特性相关的代码包围在特定的宏里,这样如果定义了某个NO_XXX的宏,就是去掉了该特性, 从而达到减少编译的代码,进而减小libqte的大小的目的。木铎校园 BBS 社区#A-~#X1JV9@5l2f_
r%e0{%XK0你 在configure qte的时候有一个-qconfig xxx参数, 这个xxx指定的是包含features宏的头文件, 比如qtopia里带的qconfig-qpe.h就是专门为qtopia量身定制的宏定义文件, 该文件里去掉了qtopia未用到的feature(如打印等)。如果configure时不指定-qconfig参数,则会提示你从qte预先定义好的 qconfig中选择一个,如small/large/full, 这三项对应不同的qconfig-xxx文件, 每个文件包含不同的feature定义。 具体的位置在:$QTEDIR/src/tools/qconfig-xxx.h
l(`K5r!Dd0
5S+ma0wp0我们要裁减qte库最好是建立一个自己的qconfig-myconfig.h文件, 把自己的程序未用到的特性对应的宏定义在这个文件里。 configure qte的时候加-qconfig myconfig选项,这样就可以使用自己的feature定义文件了。木铎校园 BBS 社区u Mh"Ql+[q-a&t
木铎校园 BBS 社区/p nh+D8z P `!i
另外需要注意的一点是, feature之间有依赖关系,你disable某个特性很可能连带其他一些特性也被disable。 所以还要参看$QTEDIR/src/tools/qfeatures.h中对feature依赖关系的描述。木铎校园 BBS 社区Uq!ce1I n?8T
木铎校园 BBS 社区;w3`.u4[M
feature宏对应的功能参见文档:
i9[S C0P*{qBN&k8P0http://doc.trolltech.com/qtopia2.0/html/features.html木铎校园 BBS 社区2i%pWgMx _ y
5qBK+V abR ?"V0Good Luck!木铎校园 BBS 社区t'KY~w#^D
木铎校园 BBS 社区 u'XGfa2C%?
木铎校园 BBS 社区^3II6aE3|:e
如何改变qvfb桌面的默认颜色(绿色)?木铎校园 BBS 社区$|/CH.l2HK3|| W]
qte 2.x里提供的API:木铎校园 BBS 社区|b~/^2o7P,E
QWSServer::setDesktopBackground(const QColor&);
9X*SG:Uq8~%g_0QWSServer::setDesktopBackground(const QImage&);
\/md#n GP0木铎校园 BBS 社区:@2gF(mY*qV`8Q
qtopia core 4里提供的API:
D,C]{D,|^dx_i0QWSServer::setBackground(const QBrush&);
/GO |$x u t7k.a(OV0木铎校园 BBS 社区2T;fLoRDcA x1a6l
默认的颜色在源码的qwindowsystem_qws.cpp文件, QWSServer的构造函数里赋值,也可以直接去修改源码。
f cq4clE0
af"J\/P VP8gk$z0
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1548996木铎校园 BBS 社区@#s1P+eZ"dMF
z,dF3ZM+J0
相关阅读:
- 【tips】 查看修改 linux 网卡工作模式 (平凡的香草, 2007-3-13)
- The Linux HTTP Benchmarking HOWTO (平凡的香草, 2007-6-04)
- Linux Autofs LDAP (平凡的香草, 2007-6-06)
- Linux Standard Base Specification 2.1 (平凡的香草, 2007-7-20)
- ReiserFS (平凡的香草, 2007-7-25)
- Qt参考文档 (行云流水, 2007-8-09)
- 基于Qt/Embedded和Qtopia的GUI设计(转) (行云流水, 2007-8-13)


