关于嵌⼊式Qt最全最棒的教程(万字⼲货)
重要:
本⽂摘⾃致远电⼦出品书籍《嵌⼊式Linux开发教程》,本教程凝聚了ZLG致远电⼦嵌⼊式⼯程师的⼼⾎,任何形式的转载请务必标注此段⽂字
整理排版:付斌,来源:ZLG致远电⼦,作者:致远电⼦
常见的嵌⼊式Linux图形界⾯有Qt/Embedded、DirectFB、MicroWindows/NanoX、MiniGUI和OpenGUI等,每个GUI都有各⾃不同特点和应⽤场合,在应⽤编程上也各不相同。
本⽂将介绍嵌⼊式Qt的基础编程,从环境搭建⼊⼿,然后介绍了qmake⼯具以及Qt Creator,紧接着给出Qt常见部件编程和范例,最终以⼀个经典的贪⾷蛇游戏在Qt上的实现为例,对前⾯介绍的编程进⾏综合。
01
Qt和Qt/Embedded
Qt介绍
Qt是⼀个跨平台应⽤程序和UI开发框架。使⽤Qt只需⼀次性开发应⽤程序,⽆需重新编写源代码,便可跨不同桌⾯和嵌⼊式操作系统部署这些应⽤程序。Qt原为奇趣科技公司(Trolltech,lltech)开发维护,现在被Nokia公司收购。⽬前在Nokia的推动下,Qt的发展⾮常快速,版本不断更新。⽬前最新的Qt主版本为5.4,所⽀持的平台如图1所⽰。
1 Qt⽀持的平台
注:本⽂使⽤的版本为4.7.3,由于qt 5 和qt 4编程⽅⾯有些差别,且市⾯上⼤多数都是qt4编程的资料,qt5的相对较少,所以建议使⽤qt4进⾏编程开发。
Qt/Embedded介绍
嵌⼊式Linux发⾏版上的Qt属于Qt的Embedded Linux分⽀平台(本⽂简称为Qt/E)。Qt/E在原始Qt的基础上,做了许多出⾊的调整以适合嵌⼊式环境。同桌⾯版的Qt/X11相⽐,嵌⼊式的Qt/E很节省内存,因为它不需要X server或是Xlib库,它在底层摒弃了Xlib,采⽤Framebuffer(帧缓冲)作为底层图形接⼝。Qt/E的应⽤程序可以直接写内核帧缓冲,这避免开发者使⽤繁琐的Xlib/Server系统。
Qt/E所⾯对的硬件平台较多,当开发⼈员需要在某硬件平台上移植Qt/E时,需要下载Qt源代码,利⽤交叉编译器编译出Qt库,接着需要将Qt库复制两份,⼀份放置在开发主机上,供编译使⽤,⼀份放在⽬标板上,供运⾏时动态加载使⽤。具体流程如图2所⽰。
2 编译Qt库流程图
02
Qt/Embedded交叉编译环境的搭建之环境介绍与安装
环境介绍
主机系统:Ubuntu 12.04 32-bit;
交叉编译环境:arm-none-linux-gnueabi;
开发板:EasyARM-i.MX283A;
安装⽂件⽬录结构:/home/vmuser/nfs_shared⽤于开发板的挂载PC机的路径。
安装tslib1.4
在采⽤触摸屏的移动终端中,触摸屏性能的调试是⼀个重要问题之⼀,因为电磁噪声的缘故,触摸屏容易存在点击不准确,有抖动等问题。
tslib是⼀个开源程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖动、校准等功能,通常作为触摸屏驱动的适配层,为上层的应⽤提供了⼀个统⼀的接⼝。
如果不采⽤触摸屏,可以不安装该库,跳过这⼀⼩节。
1. 准备⼯作
确保已安装autoconf、automake和libtool。如果没有安装,或者不确定,可输⼊下列命令进⾏安装:
注意:确保内核源码⽬录下的include/linux/input.h的EV_VERSION值与交叉编译⼯具定义的EV_VERSION值⼀致(本例为arm-none-linux-gnueabi/libc/usr/include/linux/input.h),不然在开发板上tslib会报告“selected device is not a touchscreen I understand”错误。
2. 下载源码
从⽹上下载tslib源代码,本⽂以tslib-1.为例。下载后,得到tslib-1.,解压,如下命令:
$ tar -zxvf tslib-1.
3. 配置
进⼊解压的⽬录,执⾏如下命令:
--prefix指定安装路径,⽤户可以⾃⾏指定tslib的安装⽬录。
--host指定交叉编译器,如果交叉编译器是arm-none-linux-guneabi-gcc,则指定arm-none-linux-guneabi。
4. 编译
执⾏make指令:
$ make
5. 安装
$ make install
编译⽣成的库,头⽂件等都拷贝到prefix指定的路径中。
如果可以看到该指定的路径下有4个⽂件夹:/bin、/etc、/lib、/include,则表⽰安装完成。
6. 修改ts.conf内容
为了在移植开发板的时候,可以制定输⼊模块,需要修改ts.conf⽂件的内容。
进⼊安装⽬录下的/etc/⽂件夹,修改ts.conf⽂件的内容。
$ f
到#module_raw input那⼀⾏,去掉注释#,如下图3所⽰。
图f⽂件内容
注意:⾏⾸不要留空格,要顶格。
7. 移植到开发板
将安装路径下的tslib整个⽂件夹,下载到开发板上,本例⼦放置在开发板的/usr/local/下,如图4所⽰。
图4 开发板tslib路径
嵌入式linux开发书籍8. 设置开发板环境
通过串⼝软件(如本⽂使⽤的Tera Term),打开开发板的环境变量⽂件/etc/profile。
# sudo vi /etc/profile
在末尾添加如下内容:
其中TSLIB_ROOT更改为⾃⼰实际存放的tslib的绝对路径。
TSLIB_TSDEVICE和QWS_MOUSE_PROTO这两项需要查看⾃⼰的开发板触摸屏设备对应/dev/input/下的⽂件。
9. 执⾏测试命令
重新启动开发板,使系统重新读取/etc/profile的环境变量,进⼊tslib/bin⽬录,执⾏如下命令:
# cd /usr/local/tslib/bin
# ./ts_calibrate
如果开发板出现如图5所⽰界⾯,则⾄此,tslib的安装和移植已经成功完成。
可以执⾏该⽬录下的其他程序,体检触摸屏。
图5 5点触摸屏校准画⾯
03
Qt/Embedded交叉编译环境的搭建之编译qt4.7.3-arm
下载qt-4.7.3源码包(qt-everywhere-opensource-src-4.7.),进⼊源码包的⽬录,然后解压缩,进⼊解压缩的⽬录,配置相应的选项内容保存到脚本build-qt⾥⾯,脚本⽂件内容如图6所⽰。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论