不知道ID:learndkid
30134次访问,排名3662好友1人,关注者1
learndkid的文章
原创 3 篇
翻译 0 篇
转载 33 篇
评论 8 篇
最近评论
mldstk:wow gold,
mldstk:wow gold,
dasdf:dfsdffg
liubaosen:configure 时要加-qvfb 选项
运行时:
qt-embedded/examples/hello -qws -display QVFb:0
liubaosen:Not bad!
文章分类
收藏
    相册
    Delphi
    Embeded
    VC
    单片机/arm
    其他
    驱动开发
    图象处理
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 QtEmbedded/Qtopia FAQ收藏

    新一篇: qte for arm的编译过程 | 旧一篇: 各种流行的界面换肤控件库比较

    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页面里就能看见自己的应用程序了。

    如何设置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的构造函数里赋值,也可以直接去修改源码。 

    发表于 @ 2007年04月02日 10:16:00|评论(loading...)|编辑

    新一篇: qte for arm的编译过程 | 旧一篇: 各种流行的界面换肤控件库比较

    评论

    #amwlh 发表于2007-04-29 15:02:22  IP: 59.78.2.*
    qt/embedded无法运行怎么办?
    本人正在学嵌入式linux的图形界面开发,用的工具是qt/embedded。
    先后安装了qt/embedded-3.3.1 及qt/x11-3.3.3,安装过程一切正常。
    之后运行qte的虚拟缓冲桢qvfb,弹出一个黑色视窗,证明虚拟缓冲桢运行正常
    之后我想在虚拟缓冲桢中运行一个例子,输入qt-embedded/examples/hello -qws(这是qt/embedded中自带的一个例子,应该没错),但却出现错误:can't connect to the server:fb0。
    视窗中依然一片黑暗,没有出现hello的界面
    请求高手解决办法?

    2007-05-10 11:33:35作者回复
    应该是qvfb &amp;吧,我也记不清了
    #dbx10000000 发表于2007-05-20 10:50:27  IP: 202.115.159.*
    试试如下三种办法测试。

    1 执行。/qt-embedded/examples/hello -qws

    2 运行qvfb&, 再执行qpe看看qpe能否执行

    3 将hello移植到qtopia中,再执行qpe,就是再从qtopia中执行hello
    #liubaosen 发表于2007-09-03 19:11:17  IP: 221.6.159.*
    configure 时要加-qvfb 选项
    运行时:
    qt-embedded/examples/hello -qws -display QVFb:0
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © learndkid