QTopia Core4+tslib +触摸屏(转)

QTopia Core4+tslib +触摸屏(转)

发表于 2008-08-22

QTopia Core4+tslib +触摸屏.

http://hi.baidu.com/study_hard16/blog/item/32ad048f75d5a7e8f01f3698.html

2008-08-03 15:52

第一步:参考阿牛哥的,QT安装。

# tar zxvf qtopia-core-opensource-src-4.2.2.tar.gz
# cd qtopia-core-opensource-src-4.2.2
# ./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 4,8,12,16 -no-qt3support -qt-mouse-linuxtp

# gmake (这个过程最漫长...)
# gmake install (需root 权限)
设置Qt的环境变量,修改$HOME/.bash_profile 加入
# vi $HOME/.bash_profile
添加
PATH=/usr/local/Trolltech/QtopiaCore-4.2.2-arm/bin:/usr/local/Trolltech/Qt-4.2.2/bin:$PATH
后面的是Qt for X11的环境变量设置,执行使立即生效
# source $HOME/.bash_profile
# echo $PATH
# which qmake //可查看已经添加成功
3 把qtopia-core-opensource-src-4.2.2的库放入制作的根文件系统的/lib之中
安装好的Qtopia在目录/usr/local/Trolltech/QtopiaCore-4.2.2-arm下,进入其目录。可以看到/lib文件,其中包括一个fonts文件夹,里面是一些字体,内容很多也很占空间(72M左右),因为我们的目标板一般flash很小,64M左右,所以我们只选用很常用或者自己觉得好看的字体放入。
首先在/建立一个文件夹——Qtopia,里面存放入库和字体文件的fonts文件夹,
# cd /usr/local/Trolltech/QtopiaCore-4.2.2-arm
# mkdir Qtopia
然后把/lib下的文件复制到其中
# cp –arf /usr/local/Trolltech/QtopiaCore-4.2.2-arm/lib/* /usr/local/Trolltech/QtopiaCore-4.2.2-arm/Qtopia
删掉多余的字体文件
# cd /usr/local/Trolltech/QtopiaCore-4.2.2-arm/Qtopia/fonts
只留下cour.pfa 和 cursor.pfa
最后把Qtopia拷贝到刚刚我们做好的文件系统的/lib下面
# cp –arf /usr/local/Trolltech/QtopiaCore-4.2.2-arm/Qtopia/* /rootfs/lib   //我是直接考到库下面
PS:因为我们是在PC机上编译然后再下载到开发板上,所以除了lib放置正确外,还需要把字体位置重新放置,即把我们刚刚建立好的Qtopia目录下的fonts放置在我们制作的根文件系统下正确的位置,如下
# cd /rootfs/lib
# cp –ar /rootfs/lib/fonts/* /usr/local/Trolltech/QtopiaCore-4.2.2-arm/lib/fonts/ (没有那目录就新建/usr/local/Trolltech/QtopiaCore-4.2.2-arm/lib/fonts/ )
4 设置环境变量
在文件系统中,关键要设置环境变量,才能让Qt4的程序找到我们移植的Qt4的库,
真正跑起来。设置环境变量可分两种,与PC机上一样,可以在命令行下设置,还有一种方法是在/etc/profile文件中设置,让开发板一启动就自动设置,添加命令如下:
PATH=/usr/bin:/usr/sbin:$PATH:./
export FRAMEBUFFER='/dev/fb0'
#export TSDATAFILE='/mnt/yaffs/minigui/tsdata.dat'这个我没有用到。                                                      export LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
关键是LD_LIBRARY_PATH,这个设置让系统知道Qt的库的位置,即/usr/lib/Qtopia,还有一个关键是QWS_DISPLAY,因为我们在运行程序时,有一个参数是qws,例如:./analogclock –qws ,设置好QWS_DISPLAY后才能在显示屏上显示按我们要求比例大小的图像。
5 测试代码
进入/usr/local/Trolltech/QtopiaCore-4.2.2-arm/examples/tutorial/t1
# cd /usr/local/Trolltech/QtopiaCore-4.2.2-arm/examples/tutorial/t1
# qmake -project
# qmake
# make
生成二进制文件t1,通过适合的方式拷贝到文件系统中,执行 ./t1 –qws 可以显示 helloworld

第二步:触摸屏:参考:http://blog.chinaunix.net/u/27904/showart_264380.html

进入/qtopia-core-opensource-src-4.2.2/src/gui/embedded目录,要对qmouse_qws.h qmouselinuxtp_qws.h qmouselinuxtp_qws.cpp这三个文件做修改。

打开qmouselinuxtp_qws.h这个文件加入以下定义。                                                                           #define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW                  

打开qmouselinuxtp_qws.cpp:

找到//mousePos = handler->transform(mousePos);清掉注释。                                                                 再找到#if defined(QT_QWS_IPAQ)
# ifdef QT_QWS_IPAQ_RAW
        //mousedev = QLatin1String("/dev/h3600_tsraw");
        mousedev = QLatin1String("/dev/ts0");
# else
        //mousedev = QLatin1String("/dev/h3600_ts");
        mousedev = QLatin1String("/dev/ts0");
# endif
#else
        mousedev = QLatin1String("/dev/ts0");
#endif    //因为我的驱动是/dev/ts0.其实只要改第一个就行了.因为定义了.

去掉//mousePos = handler->transform(mousePos);注释后编译报错,只需要把qmouse_qws.h中的transform()函数改成public的就可以了。如下:                                                                                 public:
    bool sendFiltered(const QPoint &, int button);
    QPoint transform(const QPoint &);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值