Andrew Huang
转载请注明作者及联络方式
qtopia 2.2 是很老的平台的,以前也就移植,现在为测试,自已再整理一下。
一。准备工作
一般开发板光盘都带了,
解压: tar xvf qtopia-2.2.0.tar.bz2
二.移植
完全重编译脚本
- #!/bin/bash
-
-
export LANG=en_US.UTF-8
-
make clean
-
echo yes | ./configure -qte '-embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -qt-zlib -qt-libpng -gif -no-g++-exceptions -no-qvfb -xplatform linux-arm-g++ -tslib' -qpe 'edition pda -displaysize 320x240 -fontfamilies "helvetica fixed micro smallsmooth smoothtimes unifont" -xplatform linux-arm-g++ -luuid' -qt2 '-no-opengl -no-xft' -dqt '-no-xft -thread'
-
-
make && make install
其中 export LANG 主要显示错误英文提示,
这个脚本是完全编译,时间较长,在第一次编译成功后,以后每次修改qt库的源码只需要make 和make install
三.运行qtopia 桌面。
参考如下脚本
- #!/bin/sh
-
export QT_BASE=/mnt/nfs/rom/qtopia-2.2.0
-
export TSLIB_TSDEVICE=/dev/input/event0
-
export TSLIB_CONFFILE=/usr/local/etc/ts.conf
-
export TSLIB_PLUGINDIR=/usr/local/lib/ts
-
export TSLIB_CALIBFILE=/etc/pointercal
-
export QTDIR=$QT_BASE
-
export QPEDIR=$QT_BASE
-
export PATH=$QTDIR/bin:$PATH
-
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
-
export CAMERA_DEVICE=/dev/video2
-
-
export QWS_MOUSE_PROTO="TPanel:/dev/input/event0"
-
if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then
-
rm /etc/pointercal
-
fi
-
-
export QWS_KEYBOARD=TTY:/dev/tty1
-
export KDEDIR=/opt/kde
-
-
export HOME=/root
-
-
#exec $QPEDIR/bin/qpe 1>/dev/null 2>/dev/null
-
exec $QPEDIR/bin/qpe
四.编译应用程序:
在编译应用程序时,首先Qtopia 库和头文件必须编译好。这里假设安装在
/home/huisen/rom/qtopia-2.2.0,
必须设置一些环境变量,否则将与桌面QT有冲突,
- export PRJ_HOME=/home/huisen/rom/qtopia-2.2.0
-
export QPEDIR=$PRJ_HOME/qtopia
-
export QTDIR=$PRJ_HOME/qt2
-
export TMAKEDIR=$PRJ_HOME/tmake
-
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
-
export PATH=$QTDIR/bin:$PATH
-
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
假设上述脚本名为 setQteHxy
在编译QT程序前,必须在shell中运行 . setQteHxy 注意. 与脚本名中有一个空格!!
五。编译运行独立运行程序
必须注意Qtopia的桌面应用程序和独立运行程序两者写法是有区别的,把独立程序强行安装QTOPIA桌面上可以运行,但是点关闭键不能退出后重新自动调用应用程序。所以必须要区分两种。
独立运行程序的Application程序的基类是 qtapplication,主程序有如下模板,其中mainForm 是主窗口名字.
- #include <qapplication.h>
-
#include "main_form.h"
-
-
int main( int argc, char ** argv )
-
{
-
QApplication a( argc, argv );
- mainForm w;
-
w.show();
-
-
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
-
-
return a.exec();
-
}
独立运行的QT程序需要一个独立的脚本来运行QT
- #使用NFS路径进行测试
-
export set QT_BASE=/mnt/nfs/rom/qtopia-2.2.0
-
export set HOME=/root
-
export set QTDIR=${QT_BASE}/qt2
-
export set QPEDIR=${QT_BASE}/qtopia
- #export set QWS_KEYBOARD="USB:/dev/input/event2"
- export set QWS_MOUSE_PROTO="TPanel:/dev/input/event0 USB:/dev/input/mice"
- #export set QWS_MOUSE_PROTO="USB:/dev/input/mice"
-
export set PATH=$QPEDIR/bin:$PATH
-
export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:/usr/local/lib
-
echo $LD_LIBRARY_PATH
-
./test_hxy -qws
六.编译运行Qtopia桌面程序。
如果确定要在桌面运行,主程序需要如下模板编写,其中应用程序的基类是 qpeapplication。
mainForm 主窗口类名
两者从外观就可以看出来,Qtopia程序是带暗纹的,并且OK按钮,而独立运行的QT程序是蓝色的标题栏。
- #include "main_form.h"
-
#include <qtopia/qpeapplication.h>
-
-
QTOPIA_ADD_APPLICATION("mainForm",mainForm)
-
QTOPIA_MAIN
阅读(1326) | 评论(0) | 转发(0) |