单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 998|回复: 0
收起左侧

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

[复制链接]
psuxaog 发表于 2018-10-10 18:57 | 显示全部楼层 |阅读模式
这份资料是我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=$QT3DIR
export QTDIR=$QTEDIR
export 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/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 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
#linguist
Linguist 是一个图形界面点击 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              += 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=ApplicationName[]=demo

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




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

完整的pdf格式文档51黑下载地址:
QTE安装汉化添加新程序全过程-宋洪业.pdf (269.56 KB, 下载次数: 1)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|单片机论坛 |51黑电子论坛技术交流 QQ 管理员QQ:125739409;技术交流QQ群636986012

Powered by 单片机教程网

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