原创 QT4

  • 格式:doc
  • 大小:41.00 KB
  • 文档页数:8

原创QT4.4.3支持jpeg,gif及触摸屏总结原创2009-02-26 14:05:30 阅读2059 评论4 字号:大中小以qt-embedded-linux-opensource-src-4.4.3.tar.gz为例一、编译tslib下载最新的开发版本,见http://tslib.berlios.de/·解压到/home下·生成configure 文件,配置、编译、安装#./autogen.sh#./configure --prefix=/home/mytslib/ --host=arm-linuxac_cv_func_malloc_0_nonnull=yes/**************************echo "ac_cv_func_malloc_0_nonnull=yes" >tslib/arm-linux.autogen #为了防止出现undefined reference to `rpl_malloc' 错误***************************/#make#make install-strip //生成瘦身应用程序和库二、编译qt源码1、将源码解压到/home下2、设置环境变量:指定qt源码的路径export QTDIR=/home/qt-embedded-linux-opensource-src-4.4.3 指定交叉编译工具export PATH=/usr/local/arm/3.4.1/bin:$PATH3、配置、编译、安装#./configure -xplatform qws/linux-arm-g++ -embedded arm -shared -little-endian -qt-kbd-usb -qt-mouse-tslib -qt-libpng -qt-libjpeg -qt-gif -depths 4,8,16,32 -confirm-license-prefix /home/qt-embedded-opensource-4.4.3/-I /home/mytslib/include -L /home/mytslib/lib#time gmake#time gmake install4、说明·-qt-libjpeg -qt-gif(会/home/qt-embedded-opensource-4.4.3/plugins/imageformats/ 下生成多个插件so库文件)·-qt-mouse-tslib:添加触摸屏,注意要将它的头文件和库指定好即-I/home/mytslib/include -L/home/mytslib/lib,如果不添加链接的头文件和库配置时会提示The tslib functionality test failed!You might need to add additional include and library search pathsby passing the -I and -Lswitches to ,in -xplatform qws/linux-arm-g++)三、向目标板上库文件和板子上的环境配置,注意目录的创建在板子上创建两个目录:qt4.4.3和tslib1、移植qt库:·将/home/qt-embedded-opensource-4.4.3/lib下的动态库都拷贝到板子上qt4.4.3/lib,注意链接;·将字体拷贝到板子上/home/qt-embedded-opensource-4.4.3/lib/fonts,注意:不需要将所有的字体都拷贝到板子上qt4.4.3/lib/fonts,用一个就行;·移植jpeg,gif的插件库,将/home/qt-embedded-opensource-4.4.3/plugins/imageformats中的文件拷贝到板子上qt4.4.3/plugins/imageformats;2、移植tslib库及测试程序·将/home/mytslib/lib/的动态库移植到板子上的tslib/lib,注意链接; ·将/home/mytslib/lib/ts的动态库移植到板子上的tslib/lib/ts·将/home/mytslib/bin/的测试文件ts_calibrate移植到板子上的tslib/bin·将/home/mytslib/etc/ts.conf移植到板子上的tslib/etc/3、设置目标板上的环境变量export QWS_DISPLAY='/dev/fb1'#export QWS_KEYBOARD='LIRC:/dev/lircd'export QWS_MOUSE_PROTO='TSLIB:/dev/input/event0'export QWS_SIZE='800x600'export TSLIB_CALIBFILE='/*/tslib/etc/pointercal'export TSLIB_CONFFILE='/*/tslib/etc/ts.conf'export TSLIB_CONSOLEDEVICE='none'export TSLIB_FBDEVICE='/dev/fb0'export TSLIB_PLUGINDIR='/*/tslib/lib/ts'export TSLIB_TSDEVICE='/dev/input/event0'ExportLD_LIBRARY_PATH=/*/qt4.4.3/plugins/imageformats/:/*/qt4.4.3/lib :$LD_LIBRARY_PATHexport QT_PLUGIN_PATH=/*/qt4.4.3/plugins/export QT_QWS_FONTDIR=/*/qt4.4.3/lib/fonts四、测试tslib$cd /*/tslib/bin$./ts_calibrate会在触摸屏上显示一个焦点,点击这一点,焦点会移动,继续点击,直到5个点都点完了为止,这就是五点测试,点击完后,会在/*/tslib/etc/下产生pointercal文件,此文件记录了,刚点击的五点的位置坐标注意:目标板的kernel中一定要添加了tslib驱动,不然会提示:selected device uses a differentversion of the event protocol than tslib was compiled for五、编写带有jpeg图片的应用程序1、将图片编译到应用程序里;编译出来的可执行文件太大,cpu 占用多。

a、创建应用程序例如:main.cpp#include <QApplication>#include <QLabel>#include <QPixmap>int main(int argc, char *argv[]){QApplication app(argc, argv);QLabel *label = new QLabel;label->setPixmap(QString::fromUtf8(":/images/test.jpg"));label->setGeometry(0,0,800,600);label->show();return app.exec();}b、创建资源文件*.qrc,应用程序同一目录下有一个images文件夹中有一张test.jpg图片<!DOCTYPE RCC><RCC version="1.0"><qresource><file>images/test.jpg</file></qresource></RCC>c、创建工程文件*.pro#qmake -project //生成工程文件修改工程文件*.pro ;添加QTPLUGIN += qjpeg和RESOURCES += tmp.qrcQTPLUGIN += qjpegTEMPLATE = appTARGET =DEPENDPATH += .INCLUDEPATH += .# InputSOURCES += main.cppRESOURCES += tmp.qrcd、编译#qmake#makee、将生成的可执行文件放到板子上运行,就会在触摸屏上显示2、图片在板子上,应用程序中指定图片的路径;编译出的可执行文件小,cpu占用率小;路径一定要指定对a、创建应用程序例如:main.cpp#include <QApplication>#include <QLabel>#include <QPixmap>int main(int argc, char *argv[]){QApplication app(argc, argv);QLabel *label = new QLabel;label->setPixmap(QString::fromUtf8("images/test.jpg"));label->setGeometry(0,0,800,600);label->show();return app.exec();}b、创建工程文件#qmake -project //生成工程文件修改工程文件*.pro ;添加QTPLUGIN += qjpegQTPLUGIN += qjpegTEMPLATE = appTARGET =DEPENDPATH += .INCLUDEPATH += .# InputSOURCES += main.cppc、编译#qmake#maked、运行将可执行文件拷到板子上;在可执行的文件的同一目录下创建images文件夹,并将test.jpeg放到该目录下;运行可执行文件,就会在触摸屏上显示。