QT从移植到项目总结:
1、2.6内核移植及QTE安装:
1.1其中提示下面信息:Make sure that you are logged in to the guest operating system.Mount the virtual CD drive in the guest,launch a Terminal,and use tar or rpm to uncompress the installer.Then,execute vmware-install.pl to install VMware Tools.首先确认你已经登录了客户端的系统在客户端机器上启用虚拟光驱启动terminal,用tar或者rpm把安装文件解压,执行安装-----表示:VMTools无法安装、分辨率很少、虚拟机的共享文件夹不能用:只需要找到linux.iso,用安装光驱的方法,则可以安装vmtools,这样后边的两个连带问题就相应解决了。
1.2少几个lib库:
可能会缺少3个库文件,使用命令:find / -name xxx.so.x 查找,找到后复制到
/home/tslib1.4/lib中
# cp librt.so.1 /home/arm-qt/lib/
# cp libstdc++.so.6 /home/ arm-qt /lib/
# cp libgcc_s.so.1 /home/ arm-qt /lib/
1.3做QT小项目整个交叉编译流程:
QT Creater下测试通过,在linux下重新编译qmake -project、 qmake、 make,然后在开发板中运行。先进入/tmp/arm-qt下进行环境变量的设置,然后运行./hello –qws.
1.4./configure参数理解:
#./configure -release -static -fast -no-largefile -no-exceptions -no-sql-sqlite -no-qt3support -qt-zlib -no-libtiff -qt-libpng -no-libmng -qt-libjpeg -make libs -nomake examples -nomake demos -nomake docs -no-cups -iconv -xplatform qws/linux-arm-g++ -embedded arm -little-endian
-qt-freetype -depths 8,16,24,32 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-qvfb -no-multimedia -no-phonon -no-phonon-backend -no-audio-backend -no-openssl -no-gfx-vnc -no-gfx-multiscreen -no-script -no-webkit -no-scripttools -no-dbus -qt-kbd-qvfb -qt-kbd-tty -no-glib -no-svg -no-mmx -no-3dnow -no-sse -no-sse2 -no-gif -qt-mouse-tslib -I/home/tslib1.4/include
-L/home/tslib1.4/lib -D__ARM_ARCH_5TEJ__
-qt-mouse-tslib -I/home/tslib1.4/include -L/home/tslib1.4/lib 是说用的是tslib,后面的-I ,-L 分别指明了要包含的头文件和库文件, home/tslib1.4/是编译tslib-1.4是生成文件的目录。
-D__ARM_ARCH_5TEJ__ 是出现了后面的错误 #error "Not supported ARM architecture" 后又重新回来加上的,加上后指明了适合的平台就没这个错误了。
在编译Qt库之前,需要其它库的支持,比如jpeg,zlib,png,根据软件及系统的不同,进行加载,系统带了就不需要自己安装,编译的时候 –qt-xxxx,表示编译该库,-no-xxxx,表示不编译,按照默认安装的话,生成的Qt库有1G到2G大小,太大了占空间,而且需要编译的时间很长,所以我们要对QT库进行裁剪,只编译我们要用的库。
下面这个网站是对configure参数的详细解释
该配置信息在博创2410,PXA-270,飞凌2440上测试成功,2G内存可在一个小时内编译完成。
1.5环境变量设置的理解:
tslib 1.4的配置
tslib的config信息首先从系统的环境变量读取,从环境变量读取的参数有下面一些 TSLIB_TSEVENTTYPE
虽然很多文档提到了这个参数,但我在tslib 1.4的源代码里面没有找到这个参数,这个参数应该已经没有什么用了
TSLIB_CONSOLEDEVICE
控制台设备文件名
TSLIB_FBDEVICE
framebuffer的文件名
TSLIB_TSDEVICE
触屏的文件名
TSLIB_CALIBFILE
触屏校正信息保存文件
TSLIB_CONFFILE
tslib配置文件
TSLIB_PLUGINDIR
tslib需要加载模块所在的目录
我们可以使用下面的指令设置以上参数
export QTDIR=$PWD
export LD_LIBRARY_PATH=$QTDIR/lib:/lib //指定QT库的路径
export TSLIB_TSDEVICE=/dev/event0 //触屏的文件名
export TSLIB_PLUGINDIR=$PWD/lib/ts // tslib需要加载模块所在的目录 export TSLIB_CONSOLEDEVICE=none //控制台设备文件名
export QT_TSLIBDIR=$PWD/lib //指定tslib库的路径
export TSLIB_CONFFILE=$PWD/etc/ts.conf // tslib配置文件
export POINTERCAL_FILE=$PWD/etc/ts-calib.conf //tslib指针文件
export QWS_MOUSE_PROTO=tslib:/dev/event0 //tslib设备文件名
export TSLIB_CALIBFILE=$PWD/etc/ts-calib.conf //触屏校正信息保存文件
export QT_QWS_FONTDIR=$PWD/lib/fonts //指定字体
./ts_calibrate //板子上陆续出现5个光标,点击完毕后会生成校准文件pintercal存放在本目录/etc/下
ts_calibrate 是一个应用程序,在屏幕上画几个十字,将用户点击后从触摸屏驱动获得的数据和屏上的坐标通过一套算法来获得校准数据写入到校准文件当中。
再继续测试
./ts_test //这时LCD上出现光标,要是前面操作都是正确的话,光标应该指哪打哪的,点在哪个地方,光标就出现在哪个地方。要是点了之后,光标没有任何的动作,那么要仔细查看ts.conf的配置文件了。
1.6 linux2.6内核与linux2.4内核挂载命令不同,否则会出现能够挂在上,但是不能共享文件或QT程序不能运行:
如果文件不能共享,vmwaretools 未安装成功,挂载命令可以试一下:
#mount –t nfs –o tcp,nolock 192.168.1.*:/home /tmp
#mount –t nfs –o nolock wsize=1024,rsize=1024 192.168.1.*/home /tmp
1.7桥接与nat区别:
桥接:板子与虚拟机连接方式
Nat:虚拟机上网连接方式
2、 电子相册:
工程名:
类名:
实现功能:
使用到的类枚举:
项目特色:
2.2功能函数:
2.2.1打开文件:
函数名:
思想:用QStringList对象s存放打开的文件,然后用QStringList::interator迭代器对象处理list,使所有打开文件保存在空字符串数组中,然后用QPixmap对象对其进行下载,在label中显示。
关键代码如下:
s = QFileDialog::getOpenFileNames(this, ("open"),("/"),tr("*.png *.jpg")); for(it=s.begin();it<s.end();it++)
{
n1[k++]=*it;
}
pix.load(n1[0]);
label->setPixmap(pix);
2.2.2 大图片完整浏览
若将label直接拖放在ui中的ScrollArea中,在编辑代码
Ui->ScrollArea->setWidget(label);时会报错,因为当用ui将label放到ScrollArea中时,已经默认其父窗体为Widget。这里label的父窗口需为ScrollArea才能浏览大图。
函数名:
思路:
关键代码:
2.2.3 自动播放图片:
1.QTimer的使用;
一、头文件中添加声明和创建函数:
例:private:
QTimer *timer;
private slots:
void action();
二、Widget函数中声明并添加算法:
Timer = new QTimer;
Connect(timer,SIGNAL(timeout()),this,SLOT(action()));
算法:void Widget::action()
{
//算法;
}
三、在触发部件函数中编写timer->start(延时(ms))或
timer->stop();
Timer一旦开始运行,则默认是一个独立线程,总之,只有将其timer->stop(),它才会停止,否则会影响图片放大缩小,前进后退等操作。所以每个函数中都必须有此举代码。
函数名:
思路:
关键代码:
2.3界面美化:
2.3.1添加资源文件:
在工程上单击右键-?add New->Qt(Qt Resource file)->选择路径->取名字->生成*.qrc的源文件
将图片放入工程目录下,
继续文件操作:add->add prefix(选择相对路径)->add->add files(选中所要加载的图片)
2.3.2背景图片的添加语句:
QImage image1;
image1.load(":/picture/3.png");
QImage image2 = image1.scaled(320,240);
QPalette palette;
palette.setBrush(w.backgroundRole(),QBrush(image2));
w.setPalette(palette);
2.4国际化:(文权译):下面代码写在main.cpp中创建对象之前。
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QFont font("wenquanyi", 36);
a. setFont(font); //a为QAppplication对象。
2.5 查阅资料,掌握程序中用到的主要的类及类方法
可再补充:
3、Mplayer:
工程名:
类名:
实现功能:
使用到的类枚举:
项目特色:
3.1QProcess 理解:
QProcess 对象process.start(“./mplayer –zoom –x 320 –y 240 daomeixiong.avi”);
在windows下,需注明mplayer.exe和avi文件的路径,如果是mplayer.exe、daomexiong.avi都在该工程的根目录下,不可使用
Process.start(“./mplayer.exe –zoom –x 320 –y 240 ./daomeixiong.avi”);代码,但是用
Process.start(“../工程名/mplayer.exe –zoom –x 320 –y 240 ../工程名/daomeixiong.avi”);则可以。编写时注意各参数前后都有空格。
Start()为启动进程,视频播放完成或更换时需要关闭该进程使用close();
3.2mplayer 相关参数:
在slave模式,是MPlayer为后台运行其他程序。不再截获键盘事件,MPlayer会从标准输入读一个换行符(\n)分隔开的命令.
-slave直接影响暂停功能:
my->write("seek +10\n");//注意数字前面的加号和换行符
my->write("seek -10\n");//快退
my->write("volume +1\n");//音量增加
my->write("volume -1\n");
my->write("mute 1\n");//静音
my->write("mute 0\n");
3.3指定窗口播放:
QString path;
QStringList list;
path=”E:\mplayer.exe”;
list<<”-zoom”;
list<<”-slave”;
list<<”-quiet”;
list<<”-wid”<<QString::number((unsigned int)this->widget->winId());
list<<”-vo”<<”directx::noaccel”;
list<<vdeioList[i];
process.start(path,list);
红色代码为windows下的固定窗口代码,在arm下无效,在虚拟机下编译时要注销掉。
3.4 QFileDialog调用文件打开方法中最后参数的关键作用:
如果写成vedio file()或*.*,则可以选择所有文件。
3.5各功能的实现(同2章)
各函数名、思路及关键代码。
3.6 查阅资料,掌握程序中用到的主要的类及类方法
可再补充:
4.测温项目
5.小结
自己在编程时遇到的问题罗列出来并注明将解决方法。
部分问题:
1)编译Tslib时,没有生成四个文件夹。
解决:可能是build.sh有问题。注意英文短线‘-’,并且./configure 后边的参数是一行命令,没有换行。
2)如果已经校准过触摸屏,并且把缺少的库文件拷到arm-qt/lib中,开机后,设定环境变量后,仍然提示缺少库文件。
解决:将环境变量写入脚本中,或者多设置几次。
3)编写电子相册程序时,有时后图片不显示,或者跳过一两张。
解决:图片没有加载进资源文件中,或者是加载进来了,但没有指定好路径,或者是图片本身不存在,或者是图片是损坏的,不能直接修改图片后缀来改变图片格式。
教师结对帮扶总结龙胜文一直以来,我们学校都在实施帮扶活动。在活动中,我和翁凤坤教师结对帮扶,通过各方面的帮助与互相学习、取长补短,…
安全教育日活动总结3月x日是第十五个“全国中小学生安全教育日”。根据教育局文件精神和有关通知的要求,结合我校实际,认真开展了围绕“…
花桥中学学生冬季长跑活动总结(年度20xx)为贯彻落实中央国务院关于开展阳光体育文件精神,切实提升学生的身体健康水平,促进健康发展…
女生大会活动总结20xx年x月x日晚上,我们召开了信息学部女生大会.这是一次令人十分难忘的,充满了挑战,又很温馨的大会,在各个方面…
清池中学开展纪念“12.9”、“12.13”教育活动总结国家已经把每年x月x日确定为中国人民抗日战争纪念日、12月x日确定为国家公…
赣州市天竺山小学“争做振兴苏区好少年—游学励志”活动方案一、指导思想游学活动通过为孩子提供具有深远教育意义的文化探索、发现旅程,在…
开展“我们的节日?中秋”主题活动总结留格镇第一初级中学20xx.9一年一度的中秋节转眼又过去了,今年的中秋节,我校搞的活动形式多样…
一、目录1.学校简介4.教育调查2.概况简介5.小结3.实习教育工作6.致谢二、学校简介昆明市盘龙区桃源小学创建于19xx年,具有…
乡村少年宫绘本阅读活动计划(20xx年下)绘本并不是一般意义上,写给孩子的,带插图的书。绘本是用图画与文字,共同叙述一个故事,表达…
清池中学开展纪念“12.9”、“12.13”教育活动总结国家已经把每年x月x日确定为中国人民抗日战争纪念日、12月x日确定为国家公…
女生大会活动总结20xx年x月x日晚上,我们召开了信息学部女生大会.这是一次令人十分难忘的,充满了挑战,又很温馨的大会,在各个方面…