打印

多年前写的QTE安装汉化添加新程序全过程

[复制链接]
129|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Spikess|  楼主 | 2018-10-6 13:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这份资料是我9年前研究QT的时候总结的,希望对大家有用



我是一名 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=$QT3DIRexport QTDIR=$QTEDIRexport PATH=$QT2DIR/bin:$QTEDIR/bin:$QPEDIR/bin:$DQTDIR/bin:$QT3DIR/bin:$QTDIR/bin:$TMAKEDIR/bin:$PATH exportLD_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/shsource /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 exportPATH=$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 tcp4242 || /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如果没有什么错误的话会看到以下界面





好有了这个我们就可以开发 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#linguistLinguist 是一个图形界面点击 File 打开一个 ts 文件在 Translation 里输入 Source text 里面的单词的翻译如下图之后按 Ctrl+Enter翻译下一个词

翻译之后把输入以下命令#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 会看到一个中文的界面





这样界面的汉化工作就完成了不过这里面自带的程序还是英文的,这些程序的源代码是放在$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 就可以看到效果了



好关于汉化工作我们就全部完成了下成我们来编一个程序把它放在 QT 的桌面上 先在$QPEDIR/src/applications/新建一个文件夹#mkdir $QPEDIR/src/applications/demo#cd $QPEDIR/src/applications/demo/

我们先用 designer 设计器设计一个窗体#designer点击 File->New 选择 Widget 设置成如下形式



然后保存成 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              += qtopiaappHEADERS              = demo.h



SOURCES              = demo.cpp \main.cppTARGET              = 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=ApplicationName[]=demo

之后制作一个 30x30 的demo.png图标文件把它放在$QPEDIR/image/opt/Qtopia/pics/经过上面的部骤启动qtopia就能看到成果了







注意:如果有些文件更改后不能保存可能这个文件是只读的可以用 chmod +w 文件 设置为可写到这里这个教程就已经结束了如果哪里有不妥之处还请多指点谢谢了!

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

417

主题

421

帖子

0

粉丝