• 10752阅读
  • 3回复

QTE安装汉化添加新程序全过程 [复制链接]

上一主题 下一主题
离线psuxaog
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-22
— 本帖被 XChinux 设置为精华(2008-11-24) —
      QTE安装汉化添加新程序全过程
我是一名QT初学者,在学习过程中遇到过很多问题走过很多的弯路,为了更多像我一样的初学者少走弯路我将把我QT安装…..的全过程表达出来希望对大家有一定的帮助。
我的系统是Red Hat 9.0
要使用的软件包如下:
qt-x11-free-3.3.4.tar.gz
qt-x11-2.3.2.tar.gz
qt-embedded-2.3.10-free.tar.gz
qtopia-free-source-2.1.1.tar.gz
tmake-1.13.tar.gz
e2fsprogs-1.38.tar.gz
jpegsrc.v6b.tar.gz
将以上的软件包放在/opt/qtopia目录下
然后
#cd /opt/qtopia/
tar zxvf qt-x11-fr*;tar zxvf qt-x11-2*;tar zxvf qt-em*;tar zxvf qtop*;tar zxvf tmake*;tar zxvf e2*;tar zxvf jpeg*
解压这些软件包
然后在/opt/qtopia目录下新建一个shell文件夹
#make /opt/qtopia/shell
用vi建立初始化环境变量用的sh文件
vi /opt/qtopia/shell/initial.sh
在按i键然后输入以下内容:
export QTEDIR=/opt/qtopia/qt-2.3.10
export QT2DIR=/opt/qtopia/qt-2.3.2
export TMAKEDIR=/opt/qtopia/tmake-1.13
export QPEDIR=/opt/qtopia/qtopia-free-2.1.1
export QT3DIR=/opt/qtopia/qt-x11-free-3.3.4
export DQTDIR=$QT3DIR
export QTDIR=$QT3DIR
export QTDIR=$QTEDIR
export PATH=$QT2DIR/bin:$QTEDIR/bin:$QPEDIR/bin:$DQTDIR/bin:$QT3DIR/bin:$QTDIR/bin:$TMAKEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QT2DIR/lib:$QTEDIR/lib:$QPEDIR/lib:$DQTDIR/lib:$QT3DIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
输入完之后按shift+:键输入wq保存退出在输入
#source /opt/qtopiashell/initial.sh
注册环境变量
安装 qt-x11-3.3.4:
#cd $QT3DIR
#export TMAKEPATH=$TMAKEDIR/lib/linux-g++
#export QTDIR=$QT3DIR
#export PATH=$QTDIR/bin:$PATH
#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
#./configure
输入yes
#make
经过漫长的编译过程下面我们安装qt-x11-2.3.2
#cd $QT2DIR
#export TMAKEPATH=$TMAKEDIR/lib/linux-g++
#export QTDIR=$QT2DIR
#export PATH=$QTDIR/bin:$PATH
#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
#./configure –no-xft
输入yes
#make
#mkdir $QTEDIR/bin
#cp bin/uic $QTEDIR/bin/
在安装qvfb
#export TMAKEPATH=$TMAKEDIR/lib/linux-g++
#export QTDIR=$QT2DIR
#export PATH=$QTDIR/bin:$PATH:$TMAKEDIR/bin
#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
#cd $QTEDIR/tools/qvfb/
#tmake –o Makefile qvfb.pro
#make
#mv qvfb $QTEDIR/bin/
安装libqte
#cd $QTEDIR
#export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
#export QTDIR=$QTEDIR
#export PATH=$QTDIR/bin:$PATH
#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
#cp –f $QPEDIR/src/qt/qconfig-qpe.h src/tools/
#./configure –system-jpeg –gif –no-xft –qconfig qpe –qvfb –depths 4,8,16,32
输入yes
#make sub-src
之后在安装e2fsprogs-1.38
#cd ../e2fs*/
#./configure –enable-elf-shlibs
#make
#make install lib/uuid/
#cp lib/uuid $QPEDIR/include/ -r
#cp lib/libuuid.a $QPEDIR/lib/
#cp lib/libuuid.so $QPEDIR/lib/
安装jpegsrc
#mkdir /usr/local/man
#mkdir /usr/local/man/man1
#cd ../jpeg*/
#./configure –enable-shared –enable-static
#make
#make install –lib
如果安装成功在/usr/local/lib/会生成libjpeg.*文件
#cp jpeglib.h $QPEDIR/include/
#cp /usr/local/lib/libjpeg.a $QPEDIR/lib/
#cp /usr/local/lib/libjpeg.so* $QPEDIR/lib/
安装qtopia
#cd $QPEDIR
#export QTDIR=$QPEDIR
#export PATH=$QPEDIR/bin:$PATH
#export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH
#./configure
#make
#make install
#cd image/opt/Qtopia/
#mkdir demohome
好经过上面的操作,QT环境就已经建立完了这时我们可以运行一下看看,但是QT自由版里没有提供启动脚本我们写一个
#vi /opt/qtopia/shell/start.sh
输入以下代码
#!/bin/sh
source /opt/qtopia/shell/initial.sh

export QTDIR=/opt/qtopia/qtopia-free-2.1.1/image/opt/Qtopia
export QPEDIR=/opt/qtopia/qtopia-free-2.1.1/image/opt/Qtopia
export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH
export PATH=$QPEDIR/bin:$PATH

findproc(){
    /bin/ps -e | /bin/sed -n -e '/\<'$1'\>/s/^*\([0-9][0-9]*\).*/\1/p'
}

killproc(){
    pid=`findproc $1`
    ["$pid" != ""]&&kill $pid
}

killall quicklauncher
killall qpe
killall qvfb
[-x /sbin/fuser]&&(/sbin/fuser -kn tcp 4242 || /sbin/fuser -kn tcp 4243)
[-x /bin/fuser]&&(/bin/fuser -kn tcp 4242 || /bin/fuser -kn tcp 4243)

echo "Stopping common sound deamons..."
artsd_pid=`findproc artsd`
["$artsd_pid" != ""]&&kill $artsd_pid
esd_pid=`findproc esd`
["$esd_pid" != ""]&&kill $esd_pid

echo "Starting qvfb..."
qvfb -width 240 -height 320 &
sleep 5s

echo "Starting Qtopia 2.1.1 ..."
HOME=/opt/qtopia/qtopia-free-2.1.1/image/opt/Qtopia/demohome qpe

echo "Restarting killed sound deamons..."
["$artsd_pid" != ""]&&artsd &
["$esd_pid" != ""]&& esd &

写完后我们可以输入以下命令
#source /opt/qtopia/shell/start.sh
如果没有什么错误的话会看到以下界面
图片1
好有了这个我们就可以开发QT程序了
下面我们把这个界面变成中文的
我们要先运行几个命令:
#source /opt/qtopia/shell/initial.sh
#cd QPEDIR
#./configure –languages “zh_CN”
#make lupdate
#cd bin
#./nct_lupdate
经过上述命令之后在$QPEDIR/i18n/会生成一个zh_CN文件夹这时用linguist工具翻译这个文件夹下所有的ts文件
#cd $QPEDIR/i18n/zh_CN
#linguist
Linguist是一个图形界面点击File打开一个ts文件在Translation里输入Source text里面的单词的翻译如下图之后按Ctrl+Enter翻译下一个词
图片2
翻译之后把输入以下命令
#make lupdate
#make install
之后把$QPEDIR/i18l/zh_CN/下的QtopiaDefaults.ts修改成如下形式
<!DOCTYPE TS><TS>
<context>
    <name>FontMap</name>
    <message>
        <source>Normal,songti,12</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <source>Large,songti,14</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <source>Small,songti,10</source>
        <translation type="unfinished"></translation>
    </message>
</context>
</TS>
然后输入以下命令生成它的qm文件
#lrelease QtopiaDefaults.ts
把qm文件复制到$QPEDIR/image/opt/Qtopia/i18l/zh_CN/
#mv QtopiaDefaults.ts $QPEDIR/image/opt/Qtopia/i18l/zh_CN/ -f
这样做的目地是让qtopia默认字体为宋体,因为要是先改QtopiaDefaults.ts,在make install之后有可能会自动把它改成我们没有改之前的样子为了确保安全才这样做,如果不改这个文件也可以只是在启动qtopia之后中文字会乱码要在Setting里面设置一下字体才行。
经过上面的操作之后我们还要把qtopia的默认语言设置为英文
修改$QPEDIR/image/opt/Qtopia/demohome/Settings/locale.conf 把它改成如下样子
[Language]
Cursor = 0
InputLanguages =zh_CN
Language = zh_CN
Screen = :0
[Location]
Timezone = America/New_York
这时我们要是启动qtopia中文会乱码因为我们还没有把songti设置好
从windows xp 系统里的c:\windows\fonts里面复制一个simsun.ttc文件(这个文件是宋体字字库)把它放在$QPEDIR/image/opt/Qtopia/lib/fonts/
之后要改一下$QPEDIR/image/opt/Qtopia/lib/fonts/fontdir在里面加一行
songti simsun.ttc FT n 50 0 su 100,120,140,160,180,200,240
这里面的songti是字体名simsun.ttc是字体文件FT是指ttf字体su后面的数字是字号
经过上面的修改之后我们可以运行qtopia会看到一个中文的界面
图片3
这样界面的汉化工作就完成了不过这里面自带的程序还是英文的,这些程序的源代码是放在$QPEDIR/src/applications/;$QPEDIR/src/settings/;$QPEDIR/src/games/里面的我们可以把这些目录来进行汉化举个例子,我们要汉化设置里面的语言那我们可以这样:
#cd $QPEDIR/src/settings/language/
#linguist language-zh_CN.ts
汉化之后
#lrelease language-zh_CN.ts
#mv language-zh_CN.qm  ../../../image/opt/Qtopia/i18l/zh_CN/ language.qm -f
这样运行qtopia就可以看到效果了
图片4
好关于汉化工作我们就全部完成了下成我们来编一个程序把它放在QT的桌面上
先在$QPEDIR/src/applications/新建一个文件夹
#mkdir $QPEDIR/src/applications/demo
#cd $QPEDIR/src/applications/demo/

我们先用designer设计器设计一个窗体
#designer
点击File->New选择Widget设置成如下形式
图片5
然后保存成demo.ui输入以下命令生成代码
#uic –o demo.h demo.ui
#uic –o demo.cpp –impl demo.h demo.ui
然后编辑main.cpp文件为如下形式:
#include "demo.h"
#include <qapplication.h>

#define QT_NO_WIZARD

int main(int argc,char **argv)
{
    QApplication app(argc,argv);
    demo dlg;
    QObject::connect(&dlg,SIGNAL(clicked()),&app,SLOT(quit()));
    app.setMainWidget(&dlg);
    dlg.show();
    return app.exec();
}

然后编辑demo.pro文件为如下形式
CONFIG        += qtopiaapp
HEADERS        = demo.h
SOURCES        = demo.cpp \
            main.cpp
TARGET        = demo

TRANSLATABLES  =  $$SOURCES \
                    $$HEADERS
接下来输入以下命令生成Makefile文件
#tmake –o Makefile demo.pro
在编译
#make
如果tmake 不成功可能是$TMAKEPATH变量没有设置可以用下面的命令设置一下
#export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
如果编译不成功,可能是环境变量的问题,因为在initial.sh里面$QPEDIR是/opt/qtopia/qtopia-free-2.1.1而在start.sh里面$QPEDIR/opt/qtopia/qtopia-free-2.1.1/image/opt/Qtopia在这里我说的$QPEDIR是/opt/qtopia/qtopia-free-2.1.1下的
如果编译成功将生成demo这个可执行文件把它放在$QPEDIR/image/opt/Qtopia/bin/
#cp demo $QPEDIR/image/opt/Qtopia/bin/
然后我们在建立一个demo.desktop文件
#vi $QPEDIR/image/opt/Qtopia/apps/Applications/demo.desktop
输入以下内容:
[Translation]
File=QtopiaApplications
Context=demo
[Desktop Entry]
Comment[]=A demo Program
Exec=demo
Icon=demo
Type=Application
Name[]=demo
之后制作一个30x30的demo.png图标文件把它放在$QPEDIR/image/opt/Qtopia/pics/
经过上面的部骤启动qtopia就能看到成果了
图片6
注意:如果有些文件更改后不能保存可能这个文件是只读的可以用 chmod +w 文件 设置为可写
到这里这个教程就已经结束了如果哪里有不妥之处还请多指点谢谢了!

小图 | 大图 图片

  • 图片1
  • 图片2
  • 图片3
  • 图片4
  • 图片5
  • 图片6
描述:这个教程的PDF文档
附件: QTE安装汉化添加新程序全过程-宋洪业.rar (232 K) 下载次数:90
离线taomic

只看该作者 1楼 发表于: 2008-11-22
好帖,顶一个
不知道你的FrameBuffer是怎么弄成PDA样子的?
离线psuxaog
只看该作者 2楼 发表于: 2008-11-22
在$QTEDIR/tools下有一个QtopiaPDA.skin用qvfb -skn $QTEDIR/tools/QtopiaPDA.skin就可以了
离线dearsohucom

只看该作者 3楼 发表于: 2008-12-04
高人,多多指教
快速回复
限100 字节
 
上一个 下一个