第23卷第l期电脑开发与应用文章编号:1003—5850(2010)01—001103基于嵌入式Linux下的Qt开发DevelopmentofQtbasedonEmbeddedLinux王浩南刘益成(黄河学院电子信息大学江西九江434023)【摘要】随着嵌入式系统的发展,在Iinux下使用Qt开发嵌入式图形用户界面是嵌入式应用的重点。我们通过实例,探讨了基于嵌入式Iinux图形界面开发过程并具体描述Qt/Embedded图形系统的移植。【关键词】Qt,Linux,嵌入式系统,图形界面开发,移植中图分类号:TP391.4l文献标识码:AABSTRACTWiththerapiddevelopmentofembeddedtechnologies,tOdevelopGraphicalUserinterfaceusingQtonIinuxisafocalpointofembeddedapplication.Withthedevelopmentexample。
thepaperintroducesgraphicalinterfacedevelopmentprogrammingmethodsbasedonembeddedI,inux。anddescribesthetransplantingofQt/Embeddedgraphicalsystem.KEYWORDSQt,Linux,embeddedsyslenl_,graphicalinterfacedevelopment,transplanting随着计算机技术和信息网路技术的急速发展,嵌入式系统的应用越来越广泛,而嵌入式产品以其精巧、使用便捷、实用等特性越来越遭到人们的偏爱。非常是近几年来,嵌人式技术越来越多的被应用于各个领域,如国防、工业控制、通信、办公手动化和消费电子领域等。为此设计出带有图形用户界面、操作便捷的嵌入式智能终端控制系统则具有很高的实用价值和研究价值。本文就是介绍怎样在嵌入式Linux下进行Qt图形界面开发的问题。1系统平台的建立按照设计须要,本文搭建的系统平台基本框架为:硬件上采用基于Sansung$3C2410CPU的目标板;在软件上,选择嵌入式Linux为操作系统,整个系统软件由引导程序(ViVi公司的bootLoader)、设备驱动、嵌入式Linux内核、文件系统(cramfs)、基于Qt/Embedded和Qtopia的用户图形界面及应用程序组成。
2Qt、Embedded的介绍与在Iinux中开发环境的构建2.1有关Qt、Qt/Embedded和QtopiaQt足一个全面的C++应用程序开发框架。它包含一个泛型,和用于跨平台开发及国际化的工具。由挪威Trolhech公司推出,主要通过汇集(++类的方式来实现提供开发应用程序用户界面部份的需求。Qt/Embedded是一个为嵌入式设备上的图形用户接口和应用程序开发而定制的C斗I+工具开发包。是一组用于访问嵌入式设备的QtC—q-一f-API。它可以运行在多种不同的处理器上布署的嵌入式Iinux操作系统上。Qtopia是Trolhech公司为采用Linux操作系统的消费电子设备而开发的综合应用平台。Qtopia包括完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。2.2Qt/Embedded开发环境的构建打算以下源码包和文件①tmake一1.11.tar.gz(用于生成Makefile文件辅助工具)②qt—embedded2.3.7.tar.gz(Qtopia构建的基础)⑧qt—xl1—2.3.2.tar.gz(用于生成moc和uic两个工具)④qtopiafree1.7.0.tar.bz2(Qtopia源代码包)⑤cross~3.3.2.tar.bz2(交叉编译器)开发环境构建过程新建一个目录:/usr/local/arm/QT,并将里面的5个源码包放在/usr/local/arm/QT?/F{录下tmake的安装#tarzxvftmake一1.11.tar.gz#cdtmake..1.]l构建文件,在文件中添加如下内容嵌入式linux下界面开发,操作为打开终端。
输入:#vienv.shexport~、MAKEDIR====$PWD*200909—10收到,2009—11—10改回**基金项目:中国石油天然气集团公司重大科技々项捐助项目(I)6(10302)。***王浩南.男。1984年生.硕研究生.研究方向:入』℃系统。·12·(总16)基于嵌入式Linux系统下的Qt开发2010正exportTMAKEPATH=$TMAKEDlR/1ib/qws/linuxarm~g+—+_exportPATH一$TMAKEDIR/bin:$PATH保存退出。并添加环境变量如下#sourceenv.sh②QtXJl的安装#tar—vxzfqt—xl1-2.3.2.tar.gz#cdqt一2.3.2#vienv.sh(操作同上上制env.sh文件方式)exportQTDIR一$PWDexportPA'I、H一$QTDIR/bin:$PATHexportIDLIBRARYPATH一$QTDIR/lib:$LDIIBRARYPATH保存退出。并添加环境变量#soureeenv.sh生成Makefile后,就可以进行安装#make安装成功后,将会有以下复印信息:Enjoy!一theTrolhechteam编译生成qvfb、qembed工具#make—Ctools/qvfb#make—Ctools/qembed③Qt/Embedded安装#cdusr/local/arm#mkdir3.3.2#tarzxvfcross一3.3.2.tar.bz2#cdusr/local/arm/QT#tarzxvfqtembedded一2.3.7.tar.gz步入软件包中并设置一些环境变量:#cdqt一2.3.7#exportPATH=/usr/loeal/arm/3.3.2/bin:$PATH#exportQTDIR一$PWD#exportQTEDIR一$QTDIR在qconfig—loca1.肉文件中添加一行:#defineQTQWSIPAQRAW添加完以后将该文件拷贝到src/tools/目录#ep/qconfig—loca1.hsrc/tools/将qt一2.3.2源码编译后的uic工具拷贝到bin目录#cpqt一2.3.2/bin/uic./bin交叉编译,设置编译选项:#./configure—xplatformlinux—arm—g++一sharedqconfiglocal—qvfb—depths4,8,16,32一gif—system—jpeg生成Makefile以后linuxtar,就可以进行编译了:#make④qtopia的安装#tarzxvfqtopia—free—1.7.0.tar.gz设置环境变量:#exportQTDIR=$QTEDIR#exportQPEDIR一$PWD#exportPATH一$QPEDIR/bin/:$PATH接出来就可以配置了:#cdsrc/#./configure—platformlinux—arm—g++生成Makefile以后,就可以进行编译了:#make以上过程编译通过后,Qt/Embedded开发环境已经完善,而且Qt/Embedded和Qtopia面向目标机的交叉编译环境也建立完成,设置环境变量set—env,就可以使用Qt来进行应用程序开发了。
3应用程序的开发一个小的Qt实例一简单估算器图1,图2分别为图形界面开发流程图和勾画的简单估算器图形界面。I程序入Vl点./Designer1新建一个主窗口(选择widgets)÷f显示所创建的窗口fl一⋯⋯一⋯V生成窗体类的头文件和现实文件(借助ut工具)●I在头文件,函数文件中添加代码tl曼圭里墼竺!}V生成项目工程文件女Pro(由progen)图1图形用户界面开发流程3.1构建窗体QtDesigner设计器是一个具有可视化用户接口的设计工具,在安装Qt的bin目录下键入./designer,将启动一个包含很多Qt组件的可视化界面,使用C++语言编撰,实例使用在Linux下自带的QtDesigner设计器开发GUI。打开QtDesigner~File/new新建一图2勾画的图形界面个部件(如Forma)选择Widgets对话框,图形界面同时包含有对话框和主窗口,其中主窗口可以放置菜单、工具栏、旁述帮助等子窗口部件。
3.2生成头文件,实现文件和主函数经过界面设计后保持文件test.ui,该文件时XML语言写的一个文本。借助uic工具就可以按照test.ui文件生成test.h和test.cpp。第23卷第1期电脑开发与应用(总17)·13·uic—Otest.htest.uiuic—Otest.cpp—impltest.htest.ui生成的文件可通过vitest.cpp和vitest.h见到刚才生成的代码,分别在test.h和test.cpp添加类对象和实现函数。在test.h中添加成员函数privateslots:voidval1();voidval2();voidval3();voidadd();voidfú():Prlvate:doublenum1;doublenum2;boolflag;在test.cpp中添加函数nunl1—0;num2—0:flag一0;connect(Button1.SIGNAL(clicked()),this,SIOT(val1()));connect(Button2,SIGNAI(clicked()),this,SI()T(val2()));connect(Button3,SIGNAL(clicked()),this,SIOT(va13()));connect(Button—add,SIGNA1(clicked()),this,SI()T(add())):connect(Button—cheng。
SIGNAl(clicked())嵌入式linux下界面开发,this,SI()T(fú()));connect(Buttonok,SIGNAI(clicked()),this,SIOT(ok()));编撰Button—add,Button—cheng,Button一0k函数编撰main()主函数//main.cpp#includeshow();returnapp.exec();}应用程序编撰完成后,可以施行以下来完成程序的编译:progen—tapp·t—Otest·protmake—OMakefiletest.promake4Qt\Embedded的移植Qt\Embedded应用到S3C2410开发板。首先把Qt\Embedded二补码库和应用程序的二补码代码复制到某个目录下,之后把这个目录制成某种类型的根文件系统,最后把这个根文件系统烧讲到$3C2410的Flash储存器上,这个过程可能须要一些制做根文件系统的工具linux操作系统界面,如mkcramfs。5结束语随着嵌入式处理器运算能力的不断增强以及对外设支持的不断丰富,嵌人式Linux系统的应用逐步增多。
Qt\Embedded延续了Qt在桌面系统的所有功能,丰富API插口和给与组件的编程模型促使嵌入式Linux系统中的应用程序开发愈发便捷。因为Qt\Embedded本身面向低端的手持式设备和联通设备,将成为未来嵌入式系统的主流。这种应用的关键在于人机交换技术的彰显,所以一个非常友好的图形用户界面(GUI)是必不可少的。本文详尽介绍了Qt\Embedded开发环境的构建过程和基于Qt\Embedded开发应用程序的方式以及将现有的应用程序移植进Qtopia的具体过程,为类似的系统开发提供了一个参考。[1][2][33E43E5][6][7][8]参考文献陈琦.QT的编程技术及应用[J].科技信息,2008(33):503—504.李凡.Qt\Embedded在嵌入式Iinux系统下的移植与应用[J].科技信息,2006,16(7):79—80.张芳辉,王建群.Qt\Embedded在嵌入式Linux上的移植l-J].计算机技术与发展,2006,16(7):64—66.何剑锋,邬文彪,李宏穆等.嵌入式Linux系统的Qt\Embedded图形界面开发[J].电子工程师,2007(33):46—48.王自强,刘海燕,李媛洲.Iinux下图形用户界面程序的开发与实现『J].计算机应用与软件,2005,22(6):81—83.刘波,周克贵.基于Qt\Embedded和Iinux的嵌入式GUI的研究与实现[J].仪器仪表用户,2007,14(6):192O.孙天泽,袁文菊,张海峰.嵌入式设计及Linux驱动开发手册[M].上海:电子工业出版社,2005.李宋琛主编.Linux面向对象窗口中级编程[M].北京:科学出版社,2001.
本文原创地址://lrxjmw.cn/jyqrslxtxdqk.html编辑:刘遄,审核员:暂无