爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 12072|回复: 66
收起左侧

[分享] (11.29新增vovan888大侠最新toolchain)编译我们自己的Qtopia相关信息及资源

[复制链接]
发表于 2006-11-22 17:24:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
编译Qtopia2.2所需资源汇总

foxcon兄弟友情提醒:
“再给大家提个醒,Qtopia Phone 2.2.0安装前,需要确认系统内有如下模块/补丁
libs-dev和jpeg-6b“



11.29最新更新vovan888大侠最新toolchain
It uses gcc-4.1.1, uClibc-0.9.29, with software

floating point. It should be placed to /work/buildroot/build_arm_nofpu
- it is not relocatable!!! Then add this line to PATH -
/work/buildroot/build_arm_nofpu/staging_dir/bin
http://www.rapidshare.ru/99333 (34 Mbytes!)



要编译Qtopia首先要把.qt-license文件放到/home/user目录或/root目录(如果你是根用户)

Code:
#---.qt-license file----------
LicenseID="1325663486"
Licensee="Beholder"
LicenseKeyExt="BGKX-RM5-F4M-2CX-5YFX-HGM87-A750"
Products="qt-enterprise"
LicenseType="Commercical"
#---end .qt-license file-----

如果你的gcc版本(用gcc –v命令查看)低于4.0就可跳过下一步,直接运行make和make install即可!如果你的gcc版本是4.0以上就需要做如下工作:
(1)        替换补丁文件archive(最新版本应该是20061106_qtopia.tar.bz2)中的文件到你电脑中;
(2)        创建从/lib/libuuid.so.1.2到/lib/libuuid.so的符号链接;
(3)        然后运行make和make install即可。

Qtopia仿真器的截图:

                               
登录/注册后可看大图


                               
登录/注册后可看大图


Qtopia2.2的源代码链接:http://www.sharebig.com/share.php?id=s2iimopssvswMJs7
Vovan888大侠11月3日编译的带Qtopia2.2的root文件系统 - root.tar.bz2
其他相关信息请参见http://handhelds.org/moin/moin.cgi/SiemensSX1
Qtopia中文开发者论坛http://www.qtopia.org.cn/



Qtopia 电话版
Qtopia电话版本是一个综合性的应用程序平台与用户界面,面向基于Linux的移动电话。预集成的应用程序增强了Qtopia的功能,帮助制造商和设计者制造多功能电话,同时维护对品牌的完全控制和用户体验。

                               
登录/注册后可看大图

创新与独特性
一切尽在掌握
Qtopia 把这个平台引入Linux手机开发领域,为产品开发提供了一个坚实的基础,目前已被Google,Adobe 与 Skype等行业领导者采用。此世界级的C++应用程序框架针对内存受限的移动设备进行了最优化。Qtopia的用户友好工具和直观的API可快速高效地进行开发。




无附加条件由于Linux在手机市场占据一定份额,采用Linux的Qtopia给移动电话行业带来了新的价值格局,摆脱了垄断性商家的束缚。Qtopia电话版本是Linux手机应用平台和用户界面实际意义上的标准。

无限制Qtopia提供完整的源码和修改权,用户可以完全自由地自定义用户体验和其后台技术。其广受欢迎的开发环境激励丰富的创造性,使移动设备的应用程序设计紧贴市场需求。

Qt/Embedded是著名的Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本。因为Qt是KDE等项目使用的GUI支持库,许多基于Qt的X Window程序因此可以非常方便地移植到Qt/Embedded上。Qt/Embedded同样是Server/Client结构。

Qt/Embedded延续了Qt在X上的强大功能,在底层摒弃了X lib,仅采用framebuffer作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件,底层接口支持键盘、GPM鼠标、触摸屏以及用户自定义的设备等。

Qt/Embedded类库完全采用C++封装。丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面。它的类库接口完全兼容于同版本的Qt-X11,使用X下的开发工具可以直接开发基于Qt/Embedded的应用程序QUI界面。

与前两种GUI系统不同的是,Qt/Embedded的底层图形引擎只能采用 framebuffer。这就注定了它是针对高端嵌入式图形领域的应用而设计的。由于该库的代码追求面面俱到,以增加它对多种硬件设备的支持,造成了其底层代码比较凌乱,各种补丁较多的问题。Qt/Embedded的结构也过于复杂臃肿,很难进行底层的扩充、定制和移植,尤其是用来实现 signal/slot机制的moc文件。


Qt/Embedded的移植

Qt/Embedded的底层图形引擎完全依赖于framebuffer,因此在移植时需考虑目标平台的Linux内核版本和framebuffer驱动程序的实现情况,包括分辨率和颜色深度等在内的信息。当前嵌入式CPU大多内部集成LCD 控制器,并支持多种配置方式。除少数CPU低色彩配置时的endian问题外,Qt/Embedded能够较好地根据系统已有的framebuffer驱动接口构建上层的图形引擎。

Qt/Embedded图形发生引擎中的图形绘制操作函数都是由源泉码目录 src/kernel/中的src/kernel/qgfxreaster_qws.cpp中所定义的QgfxRasterBase类发起声明的。对于设备更加底层的抽象描述,则在src/kernel目录中的qgfx_qws.cpp中的Qscreen类中给予相应定义。这些是对framebuffer 设备直接操作的基础,包括点、线、区域填充、alpha混合、屏幕绘制等函数均在其中定义实现。在framebuffer驱动程序调试通过后,配置 Qt/Embedded的编译选项,可以保证Qt/Embedded的图形引擎正常工作。

Qt/Embedded中的输入设备,同样分为鼠标类与键盘类。其中鼠标设备在源泉码目录中的src/kernel/qwsmouse_qws.cpp中实现,从该类又重新派生出一些特殊鼠标类设备的实现类,其派生结构如图5所示。

根据具体的硬件驱动程序实现的接口,可以实现类似的接口函数。

Qt/Embedded中对于键盘响应的实际函数位于 src/kernel/qkeyboard_qws.cpp中,在qkeyboard_qws.h中,定义了键盘类设备接口的基类 QWSKeyboardHandler。具体的键盘硬件接口依然要建立在键盘驱动程序基础上,移植时需要根据键盘驱动程序从该类派生出实现类,实现键盘事件处理函数processKeyEvent()即可。

Qt/Embedded内部对于字符集的处理采用了UNICODE编码标准。 Qt/Embedded内部对于字符集的处理采用了UNICODE编码标准。Qt/Embedded同时支持两种对于其它编码标准(如GB2312和 GBK)的支持方式:静态编译和动态插件装载。通过配置config.h文件添加相应的编码支持宏定义,可以获得其它编码标准向UNICODE的转换支持,从而在Qfont类中得以转换与显示。由于UNICODE涵盖了中文部分,Qt/Embedded对中文支持也非常好。

Qt/Embedded能够支持TTF、PFA/PFB、BDF 和QPF字体格式。由于自身采用UNICODE编码方式对字符进行处理,在一定程序上导致了能够使用的字体文件体积的增大。为了解决这一问题, Qt/Embedded采用了QPF格式,使用makeqpf等工具可以将TTF等格式的字体转换至QPF格式。



Qtopia Phone 2.2.0安装指南
下载 Qtopia Phone 2.2.0需要有合法的帐号和密码,然后可以在trolltech的用户空间中下载。源码包为qtopia-phone-src-2.2.0.tar.gz

Host(x86)

编译




代码:
tar zxvf qtopia-phone-src-2.2.0.tar.gz
cd qtopia-phone-2.2.0
export PATH=$PWD/tmake/bin:$PATH

echo "yes"|./configure -qte "-embedded -keypad-mode -system-jpeg -depths 16,24,32 -qconfig qpe -qvfb  -no-xft" -qpe "-edition phone -no-qtopiadesktop -displaysize 240x320 -defaultbuttons phone"
make
make install

运行
代码:
cd qtopia-phone-2.2.0/qtopia/image/opt/Qtopia
mkdir demohome
cd ../../../bin
./startdemo -home qtopia/image/opt/Qtopia/demohome -sound system

备注
2006-04-20 强力推荐使用SUSE 9.3-32Trolltech的研发基地在挪威和澳大利亚,大部分开发人员都使用SUSE。)



QTOpia中文化(转载)
一:字符集介绍  我国已经颁布了多种中文信息编码标准,常用的有:GB2312-1980GB12345GB13000GBK)以及最新标准GB18030,其中GB13000是对GB2312的扩展,又常被成为GBKGB18030向下兼容GB2312GBK,中文WINDOW98、中文WIN2000操作系统采用的中文字符集是GB2312  GB2312字库仅覆盖双字节部分,存储位置索引是编码中每字节的第8bit0得来的,如A1A1编码汉字在字库中的索引是2121,而非A1A1。以下是它的编码规则:单字节:00~7F
双字节:
A1~F7 A1~FE
GBK
的编码规则是:
单字节:00~7F
双字节:
81~FE 40~7E
       
80~FE
GB18030
是最新的汉字编码标准,其编码为一、二、四变长编码:
单字节:00~7F
双字节:
81~FE 40~7E
       
80~FE
四字节:
81~FE 30~39 81~FE 30~39
Unicode
编码采用等长编码,二个字节表示一个字符编码,对于ASCII码也采用双字节来表示,unicode使用二维空间来描述编码空间,平面分为256行、256列,对应于编码的高低字节。


二:Qt 国际化编程在文本显示上,Qt 使用了Unicode 作为内部编码,为了程序的国际化,通常我们在文本显示的地方不直接输入本地字符,用英文代替,比如要编写一中文界面的 Qt 程序,应该在程序中使用英文,程序编写完成后,把文本提取出来翻译。对于需要翻译的地方,首先是在该文本处用tr()函数标识,同时制作出.qm信息文件,并在程序中加入QTranslator即可。比如我们在某一程序中有如下语句:
setCaption(tr(
main window));
为了能显示中文,有两种方法:
方法一:

     修改工程文件,加上TRANSLATIONS = xxx.ts

     lupdate 工程文件名


     linguist编辑刚生成的xxx.ts文件并保存

     lrelease 工程文件名 xxx.qm

     main.cpp中加入QFont font1(unifont
,16,50,FALSE,QFont::Unicode);
qApp->setFont(font1);
QTranslator *translator = new QTranslator(0);
           translator->load("xxx.qm"
".");
          
qApp->installTranslator(translator);
方法二:


     findtr 文件名(通常为CPP文件) > xxx.po

     编辑po文件,其中charset需由iso-8859-1改为GB2312,然后将“main window”翻译成“主窗口”


     msg2qm scope zh_CN.GB2312 xxx.po xxx.qm

     main.cpp中加入QFont font1(unifont
,16,50,FALSE,QFont::Unicode);
qApp->setFont(font1);
QTranslator *translator = new QTranslator(0);
           translator->load("xxx.qm"
".");
qApp->installTranslator(translator);
方法三:
有时我们只是提供给本地用户使用,无需国际化,QT提供这一支持,在QT中有许多本地字符集同unicode的转换引擎,他们皆为QTextCodec的派生类,QGbkCodecQJisCodec, QHebrewCodec等。如:
QFont font1(
unifont,16,50,FALSE,QFont::Unicode);
qApp->setFont(font1);
QString caption=
“主窗口“;

QTextCodec *gk_codec=QTextCodec::codecForName(
GBK);
setCaption(gk_codec->toUnicode(caption));
    从上面可以看出,使用转换引擎可以轻松实现中文显示,简要步骤如下:

1
:修改main.cpp文件,将字体改为unifont
QFont font1(
unifont
,16,50,FALSE,QFont::Unicode);
qApp->setFont(font1);
2
:在想汉化的内的头文件中加入QTextCodec指针变量和转换函数
QString mytr(char *)
  
#include <qtextcodec.h>
QTextCodec* gbk;
  
QString mytr(const char *);
3
:在想汉化的类的实现文件中,修改类构造函数,加入:
  gbk=QTextCodec::codecForName(GBK);
4
:在想汉化的类的实现文件中,添加mytr函数代码

QString Form1::mytr(const char* chars)
{
    return gbk->toUnicode(chars,strlen(chars));
}
5
:在想汉化的类的实现文件中,用“mytr”替换“tr

2004-12-2
测试了上面的方法三,编译通过,如果将codec成员变量改成QTextCodec派生类变量,编译将通不过,比如将QTextCodec* gbk;改成QGbkCodec* gbk;编译将报告此处有语法错误。下面是相似的用法:
1
:修改***.cpp文件,在顶部加入codec头文件  #include <qgbkcodec.h>
2
:在***.h文件中,加入mytr()函数声明
  QString mytr(char* buffer,int size);
3
:在***.cpp文件中,加入mytr()定义
  QString mytr(char* buffer,int size)
{
       QGbkCodec* gbk=QTextCodec::codeForName(GBK
);
       
return gbk->toUnicode(buffer,size);
}
4
:在需要显示中文的地方,使用mytr函数即可

5
:修改main.cpp文件,将字体改为unifont
QFont font1(
unifont
,16,50,FALSE,QFont::Unicode);
qApp->setFont(font1);
备注:在翻译或转换之前必须将Unicode字体调入,否则显示不出中文,网上相关文章并未提及这一点,如果不显式装载该字体,系统默认的是Latin1,于是汉字显不出来。
备注2:在编译qt/embedded之前,必须修改qconfig-qpe.h配置文件的内容,将与TextCodec相关的宏定义给去掉,否则QTextCodec::codecForName(GBK)将返回NULL指针。备注3:使用findtr命令时可同时查找多个文件的tr(),并将查找结果都放入一个文件内,源文件以空格隔开即可,另外,生成的.po.qm文件的文件名最好与工程文件名相同!备注4:如果要显示繁体中文,则需要使用QTextCodec::codecForName(big5)。获取本地的使用语言,用QTextCodec::locale(),它返回Qstring变量,通常如果是中文本地的话,通常其值为zh_CN.GB2312zh_TW.Big5,根据这个返回字符串,可以加载相应的codec。如果程序只支持一种编码,也可以直接把整个应用程序的编码设置为一个默认的编码标准,比如系统只需要显示中文和英文,则可以直接设置应用程序的默认编码标准是GBK,如下使用方法:
qApp->setDefaultCodec( QTextCodec::codecForName("GBK") );
QLabel *label = new QLabel( tr("
中文标签") );
备注5:如果使用本地的字符转换器,可以使用Qstring的静态函数Qstring::fromLocal8Bit(char* buffer,int size),将本地字符串转换成UNICODE字符串,不过要设置好LANGUAGE环境变量。


三:QTOpia中文化
&#61548;
     findtr 文件名 > xxx.po
&#61548;
     编辑xxx.po文件

&#61548;
     msg2qm scope zh_CN.GB2312 xxx.po xxx.qm
&#61548;
     拷贝可执行文件到QPEDIR/bin目录

&#61548;
     拷贝xxx.poxxx.qm文件到QPEDIR/i18n/zh_CN目录
&#61548;
     进入QPEDIR/apps/Applications目录创建一新.desktop文件
&#61548;
     iconv f utf8 t GB18030 xxx.desktop > xxx1.desktop
&#61548;
     编辑xxx1.desktop文件,主要是修改ExecIconNameName[zh_CN]四项

&#61548;
     iconv f GB18030 t utf8 xxx1.desktop > xxx.desktop
&#61548;
     rm f 
xxx1.desktop
&#61548;
     qvfb
depth 16 &
&#61548;
    
cd $QPEDIR/bin
&#61548;
    
./qpe
备注:如果你的系统中有多个qtopia版本,要特别注意QTDIRQPEDIRLD_LIBRARY_PATH环境变量
备注2:可按照此方法汉化qtopia自带的应用程序备注3po文件是中间文件,程序真正需要的是qm文件。iconv是系统自带的内码转换工具,它能将utf8编码的文件转换成gb18030编码的文件,反之也能,转换这一步必不可少,因为desktop文件缺省是utf8编码的,而我们的redhat linux 73中文操作系统用的却是gb18030,所以在编辑器打开前需转换。

四:汉化qtopia-1.5.0 for Arm
    首先按照“三”的方法对要汉化的程序提取*.qm文件和*.desktop桌面配置文件,在做完这一步后,将*.qm文件down到目标机的/opt/qtopia-free-1.5.0.arm/i18n/zh_CN目录下,同时将*.desktop文件覆盖/opt/qtopia-free-1.5.0.arm/apps目录下的相应文件,目标机的环境变量配置如下:

export QTDIR=/opt/qt-2.3.3.arm
export QPEDIR=/opt/qtopia-free-1.5.0.arm
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=$QPEDIR/bin:$PATH
export LANG=zh_CN
开机启动,由于设置的语言为简体中文,qpe会自动为每个应用加载Unifont字体,以及简体中文目录下的翻译文件,因而显示出中文,翻译文件是一个方面,但更关键的是要显示中文必须有中文字体来支持,Unifont字体包含中文字,因而能显示中文,没有相应字体的支持,光有翻译文件是显示不出中文的!在经过以上的步骤后,有的应用在显示上依然会显示方框,这多半是由于该窗体相关的字体可能不是支持中文的字体,这需要直接修改源代码,以下是在汉化qtopia-free-1.5.0.arm的过程中的相关记录:
1.
     在编译qtopia的过程中,可能会报告找不到SetButtonGroupID()函数,编译通不过。这是由于库中并没有该函数,一般情况下将该语句隐藏掉,原代码的原意是设置Button按钮在ButtonGroup组的序号,隐藏该语句对应用无影响。出现这个问题,主要在/netsetup/dialup/dialupbase.cpp文件和/taskbar/shutdown.cpp文件,shutdown.cpp文件的相应行号是:96149201253行。
2.
     修改mpegplayer/playlistwidget.cpp文件的143行和166行,将字体设置改为Unifont,如下:Qfont(unifont,16,50,FALSE,QFont::Unicode)或者去掉该语句
3.
     修改snake/interface.cpp87行和186行,将字体设置改为Unifont,如下:Qfont(unifont,16,50,FALSE,QFont::Unicode)或者去掉该语句
4.
     修改qasteroids/view.cpp104行和qasteroids/toplevel.cpp109行和165行,将字体设置改为Unifont,如下:Qfont(unifont,16,50,FALSE,QFont::Unicode)或者去掉该语句
5.
     修改sysinfo/versioninfo.cpp文件,将61行的builder改为作者本人,将50行的v改为tr(corpname),重新建立po文件,并翻译corpname为国营789北京开发部,使用msg2qm生成qm文件
6.
     修改桌面,位于taskbar目录下,生成libqpe.polibqpe.qm文件,并将libqpe.qm文件拷贝到i18n/zh_CN目录下

五:qtopia目录结构    apps/Applications:应用程序桌面配置文件
apps/Games
:游戏桌面配置文件
apps/Settings
:系统设置桌面配置文件
bin
:二进制可执行文件
configs
:编译配置文件目录
doc
docsqtopia的参考文档
etc
:应用配置文件目录
i18n
:国际化目录
i18n/zh_CN
:简体中文目录
include/qpe
:与qtopia相关的头文件目录
inputmethods
:输入法
library
qtopia部分源代码目录
pics
:与应用相关的图片存放目录
plugins
:各种插件目录,如mpeg3解码插件、输入法插件等
sounds
:音频文件存放目录
taskbar
:桌面程序的源代码(qpe的源代码)


文件修改记录:
1
:创建于2003/6/9
2
:于2003/8/21添加实现中文显示的第三种方法部分

3
:于2004-1-18添加文章的“四”内容,一个汉化qtopia for arm的实例,以及“五”。

                             刘斌 2003/6/9






QtEmbedded/Qtopia FAQ
Qt-X11/QtEmbedded/Qtopia及其他常见包的关系?
build Qtopia时经常能看到以下的包:
qt-x11-2.3.2
qt-x11-3.3.x
qte-2.3.x
qtopia-2.x
tmake-1.3
qmake, uic, moc
...

其中Qtopia编译依赖Qte;
qt-x11-2.3
只与编译一些tool有关, uic,moc,qvfb..Qtopia并不依赖
qt-x11;
qt-x11-3.3.x
用来编译qtopia desktopqtopia与桌面同步的工具)和i18n相关的lupdatelrelease工具, 所以如果你configure qtopia的时候没有加-no-qtopiadesktop选项或者用到了-languages参数就得准备qt-x11-3.x; 另外在phone版本中有一个modem模拟的工具叫做phonesim 也依赖qt-x11-3.x编译,不过多数人是用不上的, 呵呵。


tmake用于生成Makefile文件, 用在qte应用上;
qmake
包含在qtopia里, 用于为Qtopia应用生成Makefile文件
;
uic,moc,qvfb,qmake,tmake
designer使用的时候要注意版本,2.x, 3.x, 4.x之间是不兼容的, 但相同主版本号之间是兼容的,所以我们在build Qtopia过程中经常从qt-x11-2.3中拷贝现成的uicmocqte使用。
编译过程中出现一些头文件找不到, 类未定义等等,很多时候是因为误使用了系统默认搜索路径下的uic等工具造成的。大家要注意这个问题

Qtopia/QtEmbedded版本对应关系?
Qtopia1.7.0 / Qte 2.3.7
Qtopia2.1.1 / Qte 2.3.10
Qtopia2.1.2 / Qte 2.3.11
Qtopia2.2.0 / Qte 2.3.12 (
包含在qtopia2.2源码包中)

Qtopia/QtEmbedded
相关源码包下载地址?
Qt/Qte:
ftp://ftp.trolltech.com/qt/source
ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/qt/source

Qtopia(1.6-2.2):
ftp://ftp.trolltech.com/qtopia/source
ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/qtopia/source

tmake:
ftp://ftp.trolltech.com/freebies/tmake
ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/freebies/tmake

我的QtEmbedded程序中的中文字符为什么显示成方块?两个可能的原因:一是qte的库未编译进对中文textcodec的支持, 解决方案:修改qconfig-qpe.h 去掉CODEC有关的宏, 重新configuremake

二是程序中选用的字体不是中文字体(默认的字体是Helvetica,没有中文) 需要在程序中指定一个中文字体, qte自带的unifont(这个字体大家普遍的看法是看上去像残废) qt4版本里新加入了文泉驿的unicode字体, 可以在源码包里找到,比较漂亮,
推荐。
如何把QtEmbedded程序移植为Qtopia程序?
Qtopia里提供了简单的宏来创建主窗口、应用style等, 最主要的改变在main函数。参考qtopia/src/applications/clock/main.cpp
--------------------------------------------------
#include "mymainwindow.h"
#include <qtopia/qpeapplication.h>
QTOPIA_ADD_APPLICATION("myappname", "MyMainWindow")
QTOPIA_MAIN
---------------------------------------------------
这一步很简单把,cp过来改改类名和binary的名字就OK了。
需要注意的是你的mainwindow的构造函数要符合(QWidget*p, const char* name, int f)的形式(三个参数)相应的,修改pro文件。 参考qtopia/src/applications/clock/clock.pro
其中最重要的一行是
CONFIG+= qtopiaapp
这样编出来是quicklaunch插件程序(applications目录下的程序默认configquichlaunch 别的目录不是哦~
要想编成独立的应用, 加上这句:CONFIG -= buildQuicklaunch

大功告成!
如何将自己的应用添加到qtopia桌面里?首先把你的应用修改成qtopia应用程序(见上一个问题)。然后把你的程序cpqtopia程序默认的搜索路径中:应用程序放到SRCDIR/qtopia/image/opt/Qtopia/bin下;(后面的SRCDIR/qtopia/image/opt/Qtopia简写为"..."
quicklaunch插件放到../plugins/application下。

假设你编译得到的quicklauncher插件叫libmybin.so, 则相应的需要在../bin下建立一个链接文件: ln -s quicklauncher mybin另外,还需要创建一个desktop文件(找个现成的改改), 把这个desktop文件放到qtopia

../apps/Applications下。

desktop文件里最重要的信息是关联的执行档名称和图标文件的名称。 执行档名称和上文中的mybin对应, 图标的话desktop文件里只写了一个文件的名字,但实际上qtopia去搜索的时候会到以执行档的名字命名的子目录去寻找该icon文件, 也就是.../pics/mybin/xxx.png以上环境都弄好后, 你进到Applications页面里就能看见自己的应用程序了。qtopia1.7版本里对图标文件的处理略有不同, 默认的图标搜索主要是两个位置,一个是内嵌图标, 也就是用qembed工具生成的inlinepics_p.h 另外 就是pics目录下的文件。 如果在inline头文件里没有找到对应的图标数组,则会在pics目录下搜索。 其他好像差不多。如何设置Qtopia的字体?
2.x系列版本在运行时的$HOME/Settings/下有个qpe.conf文件, 其中的[Apperance]下的FontFamily字段设置字体, FontSize设置字号。

Qtopia
Qte程序都会在运行时的$QTDIR/lib/fonts目录里搜索字体, 所以你要用的字体也要放在这个地方。 另外还要根据需要修改该目录下的fontdir文件。这个文件是字体(FontFamily, FontSize...)与实际的字体文件的映射, 要写正确才能找到字体文件, 所以不可马虎。
为什么QtEmbedded自带的例子无法编译通过?在编译例子的时候经常会出现这样的提示信息,无法编译:
“#make
Some of the required modules (full-config) are not available.
Skipped.”

这是怎么回事呢?我想大家应该知道qte的库可以通过修改qconfig来增删一些特性吧, 也就是说通过定义一些宏可以去掉qte库包含的class定义,以减小qte库的大小。 所以说不同的config下编译出来的qte库多数情况下是不兼容的。

大家可以从该例子的.pro文件中获得一些信息(比如aclock这个例子),在pro文件中往往会有这么一行:

REQUIRES+=full-config
这句话表明,这个qte应用用到的类只有在full-config才能满足。 所以如果你用的是别的config选项干脆就不让你编译。 如果你非要编译也不是不可能,把这个限制去掉重新生成Makefile就可以了,不过很可能会出现undefined reference或者找不到类之类的错误, 大家要做好心理准备......

要想成功编译qte的例子还有个方法是用-qconfig all参数configure QtEmbedded 这样qte库包含所有的特性, 肯定什么例子都能编过去。
如何裁减QtEmbedded?
QtEmbedded定义了一系列的features
#ifndef NO_XXX
#endif
的方式把特性相关的代码包围在特定的宏里,这样如果定义了某个NO_XXX的宏,就是去掉了该特性, 从而达到减少编译的代码,进而减小libqte的大小的目的。你在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

我们要裁减qte库最好是建立一个自己的qconfig-myconfig.h文件, 把自己的程序未用到的特性对应的宏定义在这个文件里。 configure qte的时候加-qconfig myconfig选项,这样就可以使用自己的feature定义文件了。
另外需要注意的一点是, feature之间有依赖关系,你disable某个特性很可能连带其他一些特性也被disable 所以还要参看$QTEDIR/src/tools/qfeatures.h中对feature依赖关系的描述。

feature宏对应的功能参见文档:
http://doc.trolltech.com/qtopia2.0/html/features.html

Good Luck如何改变qvfb桌面的默认颜色(绿色)?
qte 2.x里提供的API
QWSServer::setDesktopBackground(const QColor&);
QWSServer::setDesktopBackground(const QImage&);

qtopia core 4
里提供的API:
QWSServer::setBackground(const QBrush&);

默认的颜色在源码的qwindowsystem_qws.cpp文件, QWSServer的构造函数里赋值,也可以直接去修改源码。


[ 本帖最后由 shinechou 于 2006-11-29 10:59 编辑 ]

评分

参与人数 1实力分 +3 金钱数 +20 贡献分 +3 收起 理由
山高高 + 3 + 20 + 3 奖励:感谢-你和大家分享资源与经验!

查看全部评分

发表于 2006-11-22 17:37:36 | 显示全部楼层
沙发。。。
回复 支持 反对

使用道具 举报

发表于 2006-11-22 17:52:21 | 显示全部楼层
怎么看不到图片的!搞不懂……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-22 21:45:21 | 显示全部楼层
坛子里没有linux开发高手愿意出手么?Miracle兄弟已经在行动中,期待更多兄弟加入。。。
回复 支持 反对

使用道具 举报

发表于 2006-11-22 21:45:41 | 显示全部楼层
帮顶一下,google搜索一下Qtopia……
回复 支持 反对

使用道具 举报

发表于 2006-11-22 22:07:28 | 显示全部楼层
支持一下,,希望能帮上点忙,,可惜大S还没到手,,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-22 22:17:02 | 显示全部楼层
原帖由 caiheng 于 2006-11-22 22:07 发表
支持一下,,希望能帮上点忙,,可惜大S还没到手,,

兄弟做过linux开发是吗?期待!
回复 支持 反对

使用道具 举报

发表于 2006-11-22 22:17:22 | 显示全部楼层
顶一下,我也不懂的,高手看
回复 支持 反对

使用道具 举报

发表于 2006-11-22 22:17:43 | 显示全部楼层
走召弓虽贝占! 走召弓虽贝占! 走召弓虽贝占!
回复 支持 反对

使用道具 举报

发表于 2006-11-22 22:24:51 | 显示全部楼层
帮顶~~~~~~~~~希望LINUX早日为我们更好地服务~~~~~~
回复 支持 反对

使用道具 举报

发表于 2006-11-22 23:22:58 | 显示全部楼层

回复 #7 shinechou 的帖子

一点点,,也是嵌入式linux相关的,对sx1了解还不多,学习知识中...
回复 支持 反对

使用道具 举报

发表于 2006-11-22 23:28:29 | 显示全部楼层
高手开始出手了,我只有帮加油!努力。。。
回复 支持 反对

使用道具 举报

发表于 2006-11-23 00:24:14 | 显示全部楼层
交叉编译环境怎么建?内核配置有没有什么howto之类的??
回复 支持 反对

使用道具 举报

发表于 2006-11-23 01:04:49 | 显示全部楼层
:( :( :( :(
回复 支持 反对

使用道具 举报

发表于 2006-11-23 01:05:47 | 显示全部楼层
:@ :@ :@
回复 支持 反对

使用道具 举报

发表于 2006-11-23 08:34:18 | 显示全部楼层
感谢提供,Qtopia2.2的源代码。

我正好在找,有个murphypinyin输入法,
希望能编译成功在大S上用,呵呵
回复 支持 反对

使用道具 举报

发表于 2006-11-23 09:00:44 | 显示全部楼层
最好把所以资源上传到FTP,防止资源服务器没有了。。。。。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-23 09:10:11 | 显示全部楼层
原帖由 caiheng 于 2006-11-23 00:24 发表
交叉编译环境怎么建?内核配置有没有什么howto之类的??


你看看http://handhelds.org/moin/moin.cgi/SiemensSX1http://forum.oslik.ru,实在不行你就只好跟vovan888大侠联系了!对了,Qtopia有奇趣公司提供的开发者论坛!
回复 支持 反对

使用道具 举报

发表于 2006-11-23 09:22:59 | 显示全部楼层
支持一下!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-23 09:27:53 | 显示全部楼层
原帖由 foxcon 于 2006-11-23 08:34 发表
感谢提供,Qtopia2.2的源代码。

我正好在找,有个murphypinyin输入法,
希望能编译成功在大S上用,呵呵


哈哈,老兄厉害呀!期待你的精彩分享!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-4-30 21:00

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表