版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河南工业大学论文题目:基于Linux嵌入式操作系统的图形化界面的研究和实现学院:信息科学与工程学院班级:电科1304姓名:学号:2013160304指导老师姓名:王金峰摘要:随着通讯技术的发展和3G网络的推广,用户对手机的要求不在只是简单的语音、收发短信等基本功能,手机办公、手机娱乐等功能受到人们的青睐。PDA(PersonalDigitalAssistant)正是在这种背景下产生,并且发展壮大,它不仅集成了传统手机的基本功能,同时兼容了笔记本电脑的诸多功能,真正满足了用户需求。PDA市场潜力巨大,是个人终端技术的发展趋势。本文以嵌入式的PDA为研究对象,论述了基于嵌入式Linux和Qt/Em
2、bedded的图形界面终端的设计与实现,最终搭建了适用于PDA的个性化人机交互系统。论文的主要内容包括:通过对当前流行的几种嵌入式处理器、嵌入式操作系统、GUI图形支持系统优缺点的讨论,结合设备特点选择了以ARM9核心的S3C2410为本系统的硬件平台,2.4.18内核Linux和Qt为本系统的软件平台。建立硬件开发平台,对S3C2410处理器、以及外围接口部件进行了分析介绍,讲述了它们的结构及功能;对Linux系统的内核和文件系统作了深入研究。详细分析了Linux系统bootloader的功能以及它的编译与移植;Linux内核的剪切、编译和移植;Linux文件系统的制作、编译与移植,为系统开
3、发搭建了软件平台。在对Qt/Embedded系统分析的基础上,分别建立了Qt在PC机上的开发调试环境和Qt在cygwin上的编译移植环境。在PC机Qt开发环境下,开发了几个基于Qt/E的具有友好界面的应用软件。利用这几个程序构建了自己的图形化界面系统,在cygwin上经过编译移植进目标板,运行稳定。验证了Linux+Qt/Embedded+C+开发环境的有效性。最后,开发的成果为一套精美高效,可触摸式的人机交互系统,它具有可移植性好、操作简单和易于二次开发等特性。关键字:PDA嵌入式处理器嵌入式LinuxQt/Embedded人机交互系统S3C2410、引言嵌入式系统概述国际电气和电子工程师协
4、会(IEEE)定义嵌入式系统为:“用于控制、监视或者辅助设备、机器或者车间运行的装置(AnEmbeddedsystemisthedevicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants)”。通常来说,嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序四部分组成,用于实现对其它设备的控制、监视或管理等功能。嵌入式系统有如下特点:(1)专用性强
5、为特定应用设计,专用于特定的任务,软硬件可裁剪,满足对象系统要求的最基本软硬件配置。(2)可靠性高代码固化、存放在存储器芯片或处理器的内部存储器件中。(3)功耗低、体积小、集成度高、成本低系统的硬件和软件都进行高效设计,在保证稳定、安全、可靠基础上量体裁衣,去除冗余,用较少的软硬件资源实现较高的性能。嵌入式人机交互系统的研究现状人机交互是研究人、计算机之间相互作用的技术。界面是人与计算机之间交换信息的媒介和对话接口,是计算机系统的重要组成部分。人机交互的发展从人去适应计算机逐步过渡到计算机不断地适应人,演变过程共经历了以下几个阶段:(1)早期的手工作业阶段,用户(程序设计员)采用手工操作和依赖
6、机器(二进制代码)的方法在计算机上执行操作。(2)作业控制语言及交互命令语言阶段,采用批处理作业语言及交互命令语言与计算机交流,需要记忆大量命令,熟悉键盘输入方式。(3)多通道的智能人机交互阶段,涵盖了用户表达意图、执行动作或感知反馈的各种信息交互,如言语、手势、触觉等方面。多通道人机界面是基于视线跟踪、语音识别、手势输入、感觉反馈等的新交互技术,实现科学计算可视化、虚拟现实等,这些技术对计算机系统性能提出了更高的要求。它允许用户利用多个交互通道以并行、非精确方式与计算机系统进行交互,旨在提高人机交互的自然性和高效性。嵌入式人机交互系统的发展趋势当今信息时代,使得嵌入式产品获得了巨大的发展契机
7、,为嵌入式市场展现了美好的前景,同时也对嵌入式研发提出了新的挑战。(1)网络化要求随着因特网技术的成熟,未来嵌入式设备为了适应网络发展,必然要求硬件上提供各种网络通信接口,软件方面系统内核要支持网络模块,实现随时随地上网。(2)精简系统内核设计者应尽量精简系统内核,只保留和系统功能紧密相关的软硬件,利用最低的资源实现最适当的功能。(3)提供友好的多媒体人机界面嵌入式设备能与用户亲密接触,最重要的因素就是它能提供非常友好的用户界面。本课题研究意义嵌入式系统因其体积小、可靠性高、功能强等优势,已渗透到工业、农业、教育、国防、科研以及日常生活等各个领域,对各行各业的技术改造、产品更新换代、提高生产率
8、等方面起到了极其重要的作用。同时,嵌入式Linux操作系统以其开放源代码、易于开发、功能强大、稳定、成本低等优势迅速跻身于主流嵌入式操作系统。基于嵌入式Linux操作系统的研究和应用具有巨大的学术和商业价值。相对于桌面系统,人机交互技术在嵌入式系统中的研究还处于初级阶段。嵌入式系统的终端产品在系统简洁、美观、方便好用,人性化设计等方面较桌面系统还有巨大差距,因此越来越多的人投入到嵌入式GUI的的开发当中。本课题正是探索如何在S3C2410处理器(ARM9)上搭建和移植嵌入式Linux操作系统并在移植好的操作系统上实现GUI,同时实现基于Qt/Embedded的应用软件的开发,最后构造一个完整的
9、PDA图形化系统。嵌入式系统开发硬件平台构建硬件系统设计方案一个应用系统的设计都是面向产品的,以产品需求来定制系统。总的来说,在系统硬件体系结构设计时,应当遵守一定的标准,具体标准包括:先要综合了解系统各方面需求,在分析之后确定合适的解决方案,提出硬件的体系结构及系统外围各功能模块的实现。充分利用当前比较成熟的技术方案,这样可以保证电路设计的正确性和可靠性,并且可以大大缩短系统的设计时间。硬件系统采用模块化、标准化设计,还应尽量选择典型的电路功能模块。因为硬件升级比软件升级相对复杂,所以硬件系统体系架构应该尽量使用开放模式,采用通用平台设计,以降低成本和减小开发周期,也便于将来对系统的改进与升
10、级。嵌入式系统一般采用软硬件一体化的解决方案,在硬件设计同时进行软件开发,硬件的方案要根据软件的可行性进行考虑,而软件的设计也要根据硬件的性能进行考虑,这样在具体实现时,整个系统就可以不断的进行分析与改进,能够使系统达到最优化。系统需求分析本系统提供了一种嵌入式PDA多种应用软件的功能。友好的人机交互接口组成系统的控制面板,方便用户的操作。网络通信和mp3解码播放等应用的实现使系统除了必需具有人机交互的控制功能外,还应该具有丰富的通讯、网络接口和强大的mp3解码功能。具体需求如下:宿主机与目标板的交互接口,包括UART通用串口、JTAG烧写接口等;LCD模块及触摸屏;必须实现通用的以太网Eth
11、ernet接口,用来实现目标机的远程登录和访问;强大的处理器解码性能和可靠的音频控制器,实现mp3歌曲文件实时播放;必须具有足够的存储器空间,用来存储系统镜像和音视频文件。硬件平台本设计使用Samsung公司S3C2410处理器的S3EB2410开发板作为硬件开发平台,用它进行ARM技术评估以及嵌入式Linux系统设计。平台采用开放式架构设计,便于根据应用需要,进行各种功能扩展。其硬件框图如下图所示:IRDUARIDLL1KTInipo罚口1SFIKiHTShl-MnhlxnACAID:iELCARDCHJ3RMT町龜維口LCDraLUSJCKYST/iLuUlsIUSBtoiceu空乩口IN
12、Ill?n!i1li5haihicCFirS3CSII.0di丽wnrrUSBI:口ATMH-CDILAJiH2Mi-IMHylcKAzikrnciI血I址盍帽KSHLTEJwrit-|1-:UMByfeI理還IUXELJS2ra?JT-WiFCJWEEFCSRT(1)内核工作电压为1.8V、存储器供电电压3.3V、外部I/O设备供电电压3.3V;(2)使用外部12MHz晶振,CPU内部倍频至200MHz;(3)LCD接口,最大可支持4K色STN和256色TFT;(4)4路PWM;(5)3通道的UART串口接口;双USB2.0接口,实现与U盘、硬盘、键盘等从设备的通讯,一通道USBDEVICE
13、;(7)TSP触摸屏控制器;(8)8通道10位ADC模数转换接口;(9)10M以太网卡;(10)IIC总线EEPROM;IIS数字音频输入/输出接口。两片32MBSDRAM,作为程序运行空间。64MBNandFlash存储器,用于存放Linux系统。电路模块设计分析网络模块S3C2410没有集成网络控制器,在嵌入式平台中需增加独立的以太网控制芯片来实现网络接口,本系统通过外接一片CS8900A芯片扩展了一个10M的以太网接口。CS8900A是美国CIRRUSLOGIC公司生产的以太网控制器,由于其优良的性能、低功耗及低廉的价格,使其在10Mbps嵌入式网络应用中占有相当的比例。数抿总裟数獻址脣
14、CS.OOA4兽上图为CS8900A的硬件连接示意图。S3C2410通过数据总线与若干控制信号和CS8900A相连接,系统与外部网络通信通过以太网接口进行扩展。以太网接口使用的是集成了网络变压器(Transformer)的RJ45网络接口,网络变压器的功能就是把PHY输出的差分信号用差模耦合的方式进行耦合滤波以增强信号,并且通过电磁场的转换,耦合到连接网线的另一端,这样使网络传输媒介和PHY之间没有物理上直接连接,隔断了信号中可能存在的直流分量,实现了在不同电平下工作的设备可以传送数据。LCD模块S3C2410内部集成了LCD控制器逻辑单元,支持黑白屏LCD、STN-LCD、TFT-LCD等多
15、种显示屏,用来将LCD图像数据从系统内存的视频缓冲区传输到外部LCD驱动器,同时产生数据传输与显示时使用的各种时钟与控制信号。如下图所示的S3C2410的LCD控制器内部组成框图,LCD数据总线VD0VD23用来传输16位RGB565格式数据到液晶模块显示,LCD控制线有5条:VFRAME帧同步信号、VLINE行同步信号、VCLK位时钟信号、LEND行结束信号、VM输出数据使能信号。LCD运行原理:为了显示一帧图像,首先在系统的帧缓冲区中存入要显示的图像数据,然后让LCD控制器的DMA地址寄存器指向帧缓冲器的起始地址,读出帧缓冲区的数据到LCD控制器的输入FIFO队列,由于设计中采用16位方式
16、,不需要对framebuffer帧缓冲区中的数据进行转换处理,直接把数据送到输出FIFO队列,最后将数据送到液晶模块处理,就可以驱动LCD显示图像。电源系统S3C2410使用两种电压供电:内核电压1.8V、外围电压3.3V。存储系统的Flash和SDRAM、网络控制器CS8900A、音频控制器UDA1341TS都采用典型的3.3V的TTL电压供电,而LCD需要5V电压供电,从而系统中共需要1.8V、3.3V和5V三种不同电平的电压。被系统的电源电路如下所示:POWERI系统选用线性稳压源方案,输入电源使用5V/800mA的电源适配器,经过钽电容滤波后送给外围的LCD接口电路提供5V电压,同时送
17、到LDO芯片,将5V直流变为3.3V,并经过滤波在经过一个LDO芯片,变为1.8V供处理器内核。宿主机接口本系统用到的宿主机接口主要包括:并口、UART串口。其中,开发板的J-TAG接口通过20PIN排线与仿真器相连,仿真器再通过并口线与宿主机并口相连,J-TAG接口在本系统中用来配合EmbestIDE软件将系统的内核及文件系统烧写到NandFlash存储器,而UART串口则是系统开发时,宿主机用来操作目标板的控制台接口。本系统目标板设计采用标准的20针接口,以方便连接各种标准的仿真器。其JTAG接口原理图如下:三、嵌入式系统开发软件环境构建3.1交叉编译环境搭建交叉编译环境的硬件支持为:宿主
18、机:PC一台,安装Windows7操作系统,安装cygwin软件。PC机有串口(或是USB转串口)和并口同目标板通信。交叉编译软件:从 HYPERLINK 上下载cygwin,这里用1.5.1版本,在Windows7上安装。从 HYPERLINK 下载交叉编译工具cross-armtoolsTinux.tar.bz2,将其拷贝到cygwin/tmp目录下。运行cygwin,执行以下命令完成cygwin环境下Linux交叉编译工具安装:cd/usrar-xvjf/tmp/cross-armtools-linux.tar.bz2lsarm-linux正确解压后,可以看到多了一个arm-linux目
19、录,即交叉编译工具安装目录。写一个shell文本set_linux.sh,来设置cygwin下程序开发的环境变量,以便搭建一个Linux开发、编译和应用程序测试的环境。shell文本代码如下:#!/bin/sh#set_linux.sh/*交叉编译工具安装目录*/exportCROSSDIR=/usr/*存放源代码和测试程序*/exportSOURCEDIR=/tmp/edukit-2410/*存放vivi,linux,fs,guiandexamples(debug)*/exportWORKDIR=/usr/local/src/edukit-2410/*存放可执行文件*/exportINSTA
20、LLDIR=/home/appif-d$SOURCEDIR;thenecho$SOURCEDIRelseechoCreatingdirectory:$SOURCEDIRmkdir-p$SOURCEDIRfiif-d$WORKDIR;thenecho$WORKDIRelseechoCreatingdirectory:$WORKDIRmkdir-p$WORKDIRfiif-d$INSTALLDIR;thenecho$INSTALLDIRelseechoCreatingdirectory:$INSTALLDIRmkdir-p$INSTALLDIRfiexportLIBDIR=-L$CROSSDIR/
21、arm-linux/lib/-L$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3CROSS=arm-linux-exportCC=$CROSSgccexportAS=$CROSSasexportLD=$CROSSldexportCFLAGS=-O2-fomit-frame-pointerexportCPPFLAGS=-I$WORKDIR/kernel/include-I$CROSSDIR/arm-linux/include-I$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3/includeexportLDFLAGS=$LIBDIRexpo
22、rtGCCMISC=$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3/exportPATH=$CROSSDIR/bin:$CROSSDIR/arm-linux/bin:$GCCMISC:$PATHecho$PATH运行cygwin,执行以下命令:source/tmp/edukit-2410/set_linux.sharmlinuxgcc-vBootloeder的移植Bootloader是硬件上电后执行的第一段程序,负责硬件的初始化和操作系统内核的引导。通过这个引导程序,建立内存空间的映射,将系统的软硬件环境设置到合适的状态,最终完成操作系统引导、装载和运行。本课题B
23、ootloader选用vivi,因为它对S3C2410有很好的支持,其最大的优点是直接支持NandFlash。Vivi启动详细过程:在对VIVI进行基本的修改之后,运行以下命令进行编译source/tmp/edukit-2410/set_linux.shcd/usr/local/src/edukit-2410/vivimakecleanmakemenuconfigmakemakemenuconfig命令对VIVI进行配置(如图34)。选择LoadanalternateconfigurationFile选AM29LV160DB芯片的扇区为:1至5。如下FlashProgrammer配置图。烧写完
24、成后,给目标板复位,如烧写成功,则可通过超级终端看到相关运行信择已生成的配置文件smdk2410,选择保存退出。然后执行make命令,生成VIVI的可执行映像文件。本项目中要把VIVI烧写进NandFlash,首先运行Flash烧写软件FlashProgrammer,选择要烧写的文件为NandFlash的配置文件,烧写芯片为NorFlash,烧写地址为0X00000000-0X00020000,对应本系统中息.Linux内核的移植内核是Linux系统的核心,用来提供用户层程序和硬件之间的接口,执行发生在多任务系统中的实际任务转换,处理读写磁盘的需求,处理网络接口,以及管理内存等。首先从/pub
25、/Linux/kernel/网站上下载内核源码包,Linux2.4.18.tar.bz2,放进cygwin的/tmp/edukit2410/目录下,在cygwin中执行以下命令完成Linux源代码安装:source/tmp/edukit2410/set_env_linux.shcdusr/local/src/edukit2410tar-xvjv/tmp/linux-2.4.18.tar.bz2lskernel正确解压后,可以看到多了一个kernel目录,即kernel源代码安装目录。进入kernel目录,执行以下命令,为内核植入支持S3C2410的补丁:cdkernelpatch-p1/tmp
26、/edukit-2410/linux2.4.18-rmk7kit2410.patch编译步骤:进入内核目录,修改kernel目录下的Makefile文件,指定目标代码类型和编译器:ARCH:=armCROSS_COMPILE=armlinux其中ARCH:=arm说明目标是ARM体系;CR0SS_C0MPILE二arm-linux-说明交叉编译器的前缀是arm-linux-。在cygwin中执行以下命令,完成Linux的编译过程:source/tmp/edukit-2410/set_linux.shcduser/local/src/edukit-2410/kernelmakemrproperm
27、akexconfig执行完makexconfig命令后,本系统中对Linux内核的关键配置如下,其中*和表示该选项加入内核编译;和表示不选择该选项;表示该选项作为模块编译内核,即可以动态加载和卸载该模块。1)增加对模块的支持Loadablemodulesupport-*Enableloadablemodulesupport/使内核支持加载模块*Moduleunloading/使内核支持卸载模块2)配置文件系统Filesystem-CompressedROMfilesystemsupport支持本系统使用的CRAMFSFileSystem目标板上电,在超级终端可以看到vivi启动信息,输入空格键
28、使vivi进入命令状态,然后打开EmbestIDE软件,加载下载配置文件,与目标板进行连接,连接好后点击IDE的Stop按钮,配置Debug的Download地址为0X30000000,下载的文件选择zImage,点击Download进行下载,下载完成后,点击IDE的Start按钮,在超级终端中输入:loadflashkernelx如果烧写成功,重启目标板,vivi就可以引导Linux内核了,可通过超级终端看到相关运行信息如图所示,则说明内核己经移植成功,可以在开发板上运行了。VIVIvorsimU.1.4(HuanivrKHiuangrM(gcc2.3d!HUiU31b(rekcKyJ)H4
29、.1.4TueJunK22:06:2?Z0B5脚tfiblebaseaddress=0*33DFC000Succeedmsnoryruppinp.HFKdevice:nufadureID:0 xechChipID-0 x?6(SamsungK9D1208VE*!CmiIiIftotfount!stornduiuinararintnrs.llscAtfrUlt冯冋ipariiniftlfirFt.PrteiKvlurntoslciHUmL1NUKi伽.哥理心11冏k知IcryiviCopyliriLixkernelfrora0kGB0D00O0toflxD0eOC;O-fl,izeSsOOdcQ
30、iOOSl.加阳zlwigensgic=0w016f2S13Setuplinuxpar-anelersatBx366B616Bliinu克coMijridlineis:oiriilrdrcot/de*/fcon/2hHt-/LinuMrc(?聞彌1亡一忖磧胪開血ILWPF-193讯口卩UwliiirgLinuxllrwflnipreMingIimiK.”.”Hnna,hMtinkerriftl.Limjxrsion2.4.18-rik7-0Ka:l(huanrtccyersion2.95.320919315(release)#1UedSepKU:t2:332005CP1I:flRH/lCTft
31、RlISnri9?flIsidde0toloilijaesLG)01zooefOJ-1638tpages.zn(1:0pdjes.zooe(2-ftpagesKrtmftlr&iritindlino:niHidtrdiniI/linuwrccorftlft-rtySBmUUG.hwcouriLLXj加Console:colourduiirau出e”i匸eO0n30v03!C:GL:tXEWII53MP*】ffP四、Qt图形界面的编程及实现构建一个带QTOPIA图形界面的文件系统,需要拷贝编译产生的可执文件、动态链接库、字库以及相关配置文件。可按以下步骤把已编译的QTOPIA图形界面文件加入到L
32、inux文件系统:建立一个可用的无图形界面的cramfs,在第三章我们已经做好;把无图形界面cramfs文件系统存放于$WORKDIR/root-qtopia/目录下,并在该目录下建立一个名为qt的文件夹用于存放QTOPIA运行文件;从/usr/arm-linux/lib/目录下拷贝程序运行所需函数库到$WORKDIR/root-qtopia/lib,替换无文件系统的lib目录;(4)从已编译QTOPIA目录拷贝以下目录及相关文件到$WORKDIR/root-qtopia/qt/目录:apps:QTOPIA属性页配置文件目录bin:执行文件目录etc:程序配置及杂项文件il8n:语言配置目录i
33、nclude:包含文件目录lib:动态函数库目录pics:图片及应用程序图标存放目录plugins:动态函数库存放目录services:界面服务程序存放目录sounds:事件声音文件存放目录五、基于Qt/Embedded的应用程序设计使用Qt/Embedded设计程序一般需要编写三种类型的文件:头文件(h)、实现文件(.cpp)和主函数文件(main.cpp)。头文件用来定义各种类;实现文件用于实现头文件中定义的构造函数及实现函数;主函数文件中包括启动和主窗口设置等。Qt/Embedded应用程序的开发流程如下图:Qt拥有十分强大的类库,这些类带有构建跨平台服务器与客户端程序的底层构造函数。Q
34、t的类库可以分成三部分:组件、框架、效用工具。其中,组件包括环境、主窗口、标准对话框、高级窗口部件等;框架包括对象、模型、窗口部件外观等;效用工具包括图像处理、I/O处理和杂项等。在程序设计中最常用的类包括QObject、Qapplication、QWidget、QMainwindow、QLayout、QEvent。主要类的继承树:5.1动感界面的欢迎程序设计在PC机上用shell编程完成以下文件编写头文件(.h)#include/*Hello类说明*/classHello:publicQWidgetQ_OBJECTpublic:Hello(constchar*text,QWidget*par
35、ent=0,constchar*name=0);signals:voidclicked();protected:voidmouseReleaseEvent(QMouseEvent*);voidpaintEvent(QPaintEvent*);privateslots:voidanimate();private:QStringt;intb;qwidget.h是Qt的组件类,当Timer溢出时,在该hello类中调用成员函数animator(),使文字带有动感。编写实现文件(.cpp)/*包含hello.h头文件*/#includehello.h#include#include#include#i
36、nclude/*创建一个Hello组件,设置一个40ms的动感时钟*/Hello:Hello(constchar*text,QWidget*parent,constchar*name):QWidget(parent,name),t(text),b(0)QTimer*timer=newQTimer(this);connect(timer,SIGNAL(timeout(),SLOT(animate();timer-start(40);resize(260,130);/*每次定时时间一到,privateslot即被调用*/voidHello:animate()b=(b+1)&15;repaint(F
37、ALSE);/*处理Hello组件的鼠标按钮释放事件,在组件内当鼠标被释放时发出clicked()信号*/voidHello:mouseReleaseEvent(QMouseEvent*e)if(rect().contains(e-pos()emitclicked();/*处理Hello组件的paint事件,文字首先画在像素图上,然后像素图被拷贝到屏幕上*/voidHello:paintEvent(QPaintEvent*)staticintsin_tbl16=0,38,71,92,100,92,71,38,0,-38,-71,-92,-100,-92,-71,-38;if(t.isEmpty
38、()return;/*计算一些尺寸,位置等*/QFontMetricsfm=fontMetrics();intw=fm.width(t)+20;inth=fm.height()*2;intpmx=width()/2-w/2;intpmy=height()/2-h/2;/*创建像素图并用组件的背景图填充它*/QPixmappm(w,h);pm.fill(this,pmx,pmy);/*画像素图波浪效果*/QPainterp;intx=10;inty=h/2+fm.descent();inti=0;p.begin(&pm);p.setFont(font();while(!ti.isNull()in
39、ti16=(b+i)&15;p.setPen(QColor(15-i16)*16,255,255,QColor:Hsv);p.drawText(x,y-sin_tbli16*h/800,t.mid(i,1),1);x+=fm.width(ti);i+;p.end();/*拷贝像素图到Hello组件*/bitBlt(this,pmx,pmy,&pm);qpushbutton.h,下压按钮组件,用户可以按下或释放该按钮,它可以管理自己的外观,具体定义在qpushbutton.h中;qpainter.h,qpixmap.h分别是画图、像素图组件。编写主函数文件(main.cpp)#includehe
40、llo.h/嵌入自己生成的头文件#include/*解析命令行,创建一个显示在Hello组件上的消息字符串*/intmain(intargc,char*argv)QApplicationa(argc,argv);QStrings;for(inti=1;iargc;i+)s+=argvi;if(iargc-1)s+=;if(s.isEmpty()s=Hello,MyDearTeachers!;Helloh(s);h.setCaption(ChengduUniversityofTechnology!);QObject:connect(&h,SIGNAL(clicked(),&a,SLOT(quit
41、();h.setFont(QFont(times,32,QFont:Bold);/设置默认字体h.setBackgroundColor(Qt:white);/设置默认背景色a.setMainWidget(&h);h.show();returna.exec();qapplication.h是所有Qt应用程序必须包含的类,它创立了应用程序的对象,来管理整个应用程序,包括整个应用程序范围内的各种资源。main()函数是程序的入口,Qt在将控制权交给Qt库之前,main()函数只需要进行一些初始化工作,然后Qt库会通过事件来解释程序用户的操作,在这里main()函数来实现初始化窗口系统及创建appli
42、cation对象。执行完以上命令后会在虚拟缓存中看到如图所示hello效果图。5.2构造自己的图形化系统在PC机上打造自己的图形化系统,在Qtopia平台上发布需要三个文件:执行文件(.0)、启动器文件(.desktop)和图标文件(.png)。把生成的欢迎程序、时钟、MediaPlayer播放器、文件查看器、录音机的可执行程序拷贝到/home/host/qtopia/bin目录下。为欢迎程序、时钟、MediaPlayer播放器、文件查看器、录音机分别选好图标放在/home/host/qtopia/pics目录下,注意这些图标的格式为.png格式。在/home/host/qtopia/apps
43、/Applications下编写自己的启动器文件:欢迎程序启动器文件代码:DesktopEntryComment=AHelloProgramExec=helloIcon=AmnType=ApplicationName=Hello时钟启动器文件代码:DesktopEntryComment=AClockProgramExec=clockIcon=TimeType=ApplicationName=ClockNameno=KlokkeNamede=UhrMediaplay启动器文件代码:DesktopEntryComment=AMediaPlaybackProgramExec=mpegplayerIc
44、on=medeplayType=ApplicationMimeType=audio/mpeg;video/mpeg;video/x-msvideo;audio/x-wavMimeTypeIcons=SoundPlayer;MPEGPlayer;MPEGPlayer;SoundName=MediaPlayerNameno=MPEGspillerNamede=Medienwiedergabe文件查看器启动器文件代码:DesktopEntryComment=AFileManagerProgramExec=filebrowserFile=./apps/Applications/filebrowserIcon=filefindName=FileManagerNamede=DateiManagerNameno=FilviserType=Application录音机启动器文件代码:DesktopEntryComment=AVoiceRecordingProgramExec=mediareco
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深入解析技术服务合同范本模板
- 保安服务提供商合同
- 延期还款协议
- 物资招标文件写作技巧
- 水利建设合同协议
- 货品购买合同格式
- 专业合同协议合规管理方法服务
- 联营共营合同范例
- 心理辅导与咨询服务
- 节能改造合同能源
- 提高髋关节置换患者VTE防控措施落实PDCA
- 广西2023年广西北部湾银行校园招聘考试参考题库含答案详解
- 大学生心理健康教育读本PPT(第2版)高职完整全套教学课件
- 加油站安全检查表分析(SCL)及评价记录
- 丰田车系卡罗拉(双擎)轿车用户使用手册【含书签】
- 幼儿园突发安全事件事故处置措施
- 现代药物制剂与新药研发智慧树知到答案章节测试2023年苏州大学
- 肺结核的学习课件
- 心肺复苏术最新版
- 2023-2024学年贵州省贵阳市小学数学六年级上册期末自测提分卷
- GB/T 9115.2-2000凹凸面对焊钢制管法兰
评论
0/150
提交评论