• 109629阅读
  • 123回复

开贴整理QtEmbedded/Qtopia FAQ --- 不可不看的精华都在这里哦~ [复制链接]

上一主题 下一主题
离线shiroki
 

只看楼主 正序阅读 楼主  发表于: 2006-06-13
提问 ---- 回答(注意哦,这里都是以Qtopia2.2为蓝本的,因为我用的是这个版本... )
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 desktop(qtopia与桌面同步的工具)和i18n相关的lupdate、lrelease工具, 所以如果你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中拷贝现成的uic和moc供qte使用。
编译过程中出现一些头文件找不到, 类未定义等等,很多时候是因为误使用了系统默认搜索路径下的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有关的宏, 重新configure和make

二是程序中选用的字体不是中文字体(默认的字体是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目录下的程序默认config是quichlaunch, 别的目录不是哦~)

要想编成独立的应用, 加上这句:CONFIG -= buildQuicklaunch

大功告成!

如何将自己的应用添加到qtopia桌面里?
首先把你的应用修改成qtopia应用程序(见上一个问题)。
然后把你的程序cp到qtopia程序默认的搜索路径中:
应用程序放到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的构造函数里赋值,也可以直接去修改源码。
[ 此贴被shiroki在2006-10-09 14:38重新编辑 ]
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线dennisye

只看该作者 123楼 发表于: 2017-04-18
嵌入式qt,我的板子里因为需求不挂载/proc文件系统,导致切换html页面时会段错误,如何能解决这个问题?

只看该作者 122楼 发表于: 2017-01-04
大神,我做嵌入式遇到一个问题,坑了我很长时间了。嵌入式Qt交叉编译后,导入arm板中。第一次显示时,触发到触摸屏,散的严重,有时候会黑屏,黑屏时从我终端串口看到GUI线程还在运行。当加入数据采集子线程时,黑屏现象更加频繁。但是黑屏后,杀死程序重启程序,就不会闪屏了,也不会黑屏,
离线jdlyyear

只看该作者 121楼 发表于: 2016-11-02
好东西
离线lejing

只看该作者 120楼 发表于: 2016-09-26
离线jasonlee

只看该作者 119楼 发表于: 2015-06-07
离线sanshiling

只看该作者 118楼 发表于: 2014-06-13
11111111111
离线sywh

只看该作者 117楼 发表于: 2014-05-07
最近开搞qt 4.8/embedded
fighting &&
离线suxilong

只看该作者 116楼 发表于: 2014-04-20
请问我在QT4.7.3下面进行make的时候出现这个错误 。怎么解决?

fluidlauncher.cpp:42:17: fatal error: QtXml: No such file or directory
compilation terminated.
make[3]: *** [.obj/release-shared-emb-x86/fluidlauncher.o] Error 1
make[3]: Leaving directory `/opt/qt-embedded-linux-opensource-src-4.5.0-x86/demos/embedded/fluidlauncher'
make[2]: *** [sub-fluidlauncher-make_default] Error 2
make[2]: Leaving directory `/opt/qt-embedded-linux-opensource-src-4.5.0-x86/demos/embedded'
make[1]: *** [sub-embedded-make_default] Error 2
make[1]: Leaving directory
离线maple918

只看该作者 115楼 发表于: 2014-01-22
回 楼主(shiroki) 的帖子
谢谢楼主分享!
离线hujing123

只看该作者 114楼 发表于: 2014-01-22
需要回复才能看
离线cavendish

只看该作者 113楼 发表于: 2013-05-15
qte就是qt for linux embedded, 其实就是qt/linux+framebuffer, not x11
有一个qt自己写的window system, qws
5.0下qws就没有了
no x11可以看qtwayland,另外好像有个directfb的qpa实现

qtopia已经没了,搜qt-mobility吧,其中部分库已经进入qt 5了
离线ywmlovecss

只看该作者 112楼 发表于: 2013-05-15
好老的版本了!!!
离线niunianniuqi
只看该作者 111楼 发表于: 2013-02-17
Good reference, thanks.
离线qiangyao612
只看该作者 110楼 发表于: 2012-09-22
楼主有没有关于Qt/ E 4.6或者4.7的资料介绍!
离线hello_00000
只看该作者 109楼 发表于: 2012-07-19
学习中遇到好多问题,看能解决了不
离线liyoujun

只看该作者 108楼 发表于: 2012-03-19
嘿嘿
离线ccqzhm
只看该作者 107楼 发表于: 2011-09-03
正在学qtopia,看看。
离线yiyaaixuexi

只看该作者 106楼 发表于: 2011-08-15
看到好帖子不顶不行
离线b05071262

只看该作者 105楼 发表于: 2011-01-10
先顶下 再看
离线草也
只看该作者 104楼 发表于: 2010-12-30
回 92楼(yidaoru) 的帖子
兄弟解决了么?
离线huigecool
只看该作者 103楼 发表于: 2010-11-23
怎样编译并运行一个完全由自己写的qt程序
离线leosheng
只看该作者 102楼 发表于: 2010-11-12
dddddddddddddddddddddddd
离线喃喃
只看该作者 101楼 发表于: 2010-08-31
QWSServer::setBackground(const QBrush&); ,这个是我需要的,Thank you 很有价值,版主应该给你加分。
离线喃喃
只看该作者 100楼 发表于: 2010-08-31
mark

离线embeddedman
只看该作者 99楼 发表于: 2010-07-09
-1faafafafasfa
离线zhangjl1
只看该作者 98楼 发表于: 2010-06-28
新人路过。有帮助。
离线guhao

只看该作者 97楼 发表于: 2010-06-27
看看
离线mcnana
只看该作者 96楼 发表于: 2010-05-26
想问一下各位大侠,开发一个嵌入式应用软件,比如一个日历,应用那个QT?
是QT for embedded么?下载那个版本的好呢?
谢谢
离线ianedward
只看该作者 95楼 发表于: 2010-05-18
新手刚接触几个月,感觉还不错,谢谢
离线steve710431
只看该作者 94楼 发表于: 2010-05-05
难道就是传说中的取经
离线funway
只看该作者 93楼 发表于: 2010-04-27
为什么这种置顶帖补更新下呢。  
现在都2010年了。  
楼主上面说的有很多都过时了吧?
离线yidaoru
只看该作者 92楼 发表于: 2010-04-23
安装qt-everywhere-opensource-src-4.6.2.tar.gz过程中遇到的问题,./configure -embedded -platform qws/linux-arm-g++时错误如下
You have not explicitly asked to use pkg-config and are cross-compiling.
pkg-config will not be used to automatically query cflag/lib parameters for
dependencies
2010年4月21日注册
离线axfwn

只看该作者 91楼 发表于: 2010-04-12
好贴 最近要弄这个 很是头疼啊
离线nashzh
只看该作者 90楼 发表于: 2010-04-11
支持楼主,呵呵
并不是每天多做一点,事情就会减少一点。
离线yecao
只看该作者 89楼 发表于: 2010-04-10
看看在发言!
离线191003722
只看该作者 88楼 发表于: 2010-03-30
我是新手 感谢啦 这篇文章对我很有用
期待以后可以帮助别人解答问题
离线romezxy

只看该作者 87楼 发表于: 2010-03-13
很多年前的了,现在都改了,寻找中。。。呵呵,还是感谢楼主
离线thinke365

只看该作者 86楼 发表于: 2010-02-19
引用第84楼liweikui于2009-12-29 11:47发表的  :
不对八吧,这几N年前的了,难道大家还在用这些古老的版本?? 里面的好多连接都打不开了......

想不通,这么多人用这些古董。。。
离线rooney
只看该作者 85楼 发表于: 2010-02-08
听说回复有东西看,想看看是什么东西
快速回复
限100 字节
 
上一个 下一个