第7章 基于QT的嵌入式GUI程序设计基础ppt课件_第1页
第7章 基于QT的嵌入式GUI程序设计基础ppt课件_第2页
第7章 基于QT的嵌入式GUI程序设计基础ppt课件_第3页
第7章 基于QT的嵌入式GUI程序设计基础ppt课件_第4页
第7章 基于QT的嵌入式GUI程序设计基础ppt课件_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章基于QT的嵌入式GUI程序设计基础 目录 嵌入式GUI简介 1 Qt概述 2 Qt E开发环境的搭建 3 Qt E应用程序的编译和运行 4 嵌入式GUI简介 早期嵌入式系统功能简单 对图形用户界面需求并不是太大 随着嵌入式系统的发展和普及 嵌入式系统越来越复杂 其功能越来越强大 GUI在嵌入式系统中的作用也就显得越来越突出 目前 应市场需求产生了一些高级嵌入式GUI工具包 这使得嵌入式操作系统下的图形开发成为可能 而且易于编写出更好 更漂亮的界面 嵌入式GUI的特点 系统开销少 体积小 占用的存储空间少 运行时耗用的系统资源小 高度可移植 可裁减性 以适应不同的功能需求 具有高可靠性 在某些应用场合应具备实时性 常用嵌入式GUI系统 MicroWindows MicroWindows是一个开放源码的GUI项目 基本上用C语言实现 由美国CenturySoftware公司主持开发 MicroWindows支持Intel16位和32位CPU MIPSR4000以及ARM芯片 该项目的开发一度非常活跃 国内也有人参与了其中的开发 并编写了GB2312等字符集的支持 但在Qt Embedded发布以来 该项目变得不太活跃 并长时间停留在0 89Pre7版本 可以说 以开放源码形势发展的MicroWindows项目 基本停滞 其主要特色 跨平台不需XServer采用FLTKToolkits支援TrueType字型 常用嵌入式GUI系统 2 MiniGUI MiniGUI是由北京飞漫软件技术有限公司主持的一个自由软件项目 遵循GPL条款 是国内最早出现的几个自由软件项目之一 其目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统 该项目自1998年底开始 到目前为止 已经非常成熟和稳定 它可以运行在任何一种具有POSIX线程支持的POSIX兼容系统上 主要运行于Linux控制台 MiniGUI提供了完备的多窗口机制和消息传递机制 提供了常用的控件类 包括静态文本框 按钮 单行和多行编辑框 列表框 组合框 进度条 属性页 工具栏 拖动条和树型控件等 支持各种流行图像文件 包括JPEG GIF PNG TGA BMP等 支持汉字输入法 包括内码 全拼 智能拼音等 用户还可以从飞漫软件获得五笔 自然码等输入法支持 另外 支持Windows兼容的资源文件 如位图 图标 光标等 常用嵌入式GUI系统 3 OpenGUI OpenGUI最初的名字叫FastGL 当时 只支持256色的线性显存模式 但目前也支持其他显示模式 并且支持多种操作系统平台 比如MS DOS QNX和Linux等等 不过目前只支持x86硬件平台 OpenGUI也分为三层 最低层是由汇编编写的快速图形引擎 中间层提供了图形绘制API 包括线条 矩形 圆弧等 并且兼容于Borland的BGIAPI 第三层用C 编写 提供了完整的GUI对象集 OpenGUI基于一个用汇编实现的x86图形内核 实现了一个高层的C C 图形 窗口接口 提供了二维绘图原语 消息驱动的API及BMP文件格式支持 OpenGUI功能强大 使用方便 支持鼠标和键盘的事件 在Linux上基于Framebuffer或者SVGALib实现绘图 由于其基于汇编实现的内核并利用MMX指令进行了优化 OpenGUI运行速度非常快 由于其内核用汇编实现 可移植性受到了影响 通常在驱动程序一级 性能和可移植性是相互矛盾的 OpenGUI采用LGPL条款发布 比较适合于基于x86平台的实时系统 可移植性稍差 目前的发展也基本停滞 常用嵌入式GUI系统 4 Qt Embedded Qt Embedded是著名的Qt库开发商TrollTech开发的基于framebuffer的 面向嵌入式系统的Qt版本 因其面向对象 跨平台和界面设计更美观而得到广泛的应用 现在 Qt Embedded被广泛地应用于各种嵌入式产品和设备中 从消费电器 如智能手机 机顶盒 到工业控制设备 如医学成像设备 移动信息系统等 Qt Embedded是一个跨平台的C 图形用户界面应用程序框架 其对象容易扩展 可移植性好 并且 由于KDE等项目使用Qt作为支持库 所以由许多基于Qt的XWindows程序可以非常方便地移植到Qt Embedded版本上 美中不足是其C 接口对某些应用来讲比较臃肿 而且如果在商品化产品中使用这个库 对硬件的性能要求比较高 Qt版本 QtQtEmbedded嵌入式桌面平台Qtopia Qt Qt泛指Qt的所有桌面版本 比如Qt X11 QtWindows QtMac等 是一个跨平台的C 图形用户界面应用程序开发框架 是开发源代码KDE桌面环境的基础 Qt以工具开发包的形式提供给开发者 这些开发包包括了图形设计器 Makefile制作工具 字体国际化工具和Qt的C 类库等 QtAPI在所有支持的平台上都是相同的 Qt工具在这些平台上的使用方式也一致 因而Qt应用的开发和部署与平台无关 具有显著的跨平台特性 Qt支持下列平台 Qt Windows MicrosoftWindowsXP 2000 NT4 Me 98 Qt Mac MacOSX Qt X11 Linux Solaris HP UX IRIX AIX 与其它许多Unix变式 Qt Qt Embedded Qt Embedded是Qt的嵌入式版本 简称QtE 它提供的API与Qt桌面版本的API相同 经过编译使用Qt创建的应用程序即可运行在Qt Embedded上 Qt Embedded采用帧缓冲 FrameBuffer 作为底层图形接口 它包括一组完备的GUI类 操作系统封装 数据结构类 功能类和组合类 它还包含一个虚拟帧缓冲器 使得开发人员可以在桌面系统上进行编写测试和调试 大部分Qt的应用程序可以经过简单的编译与重设窗口大小移植到Qt Embedded Qt Embedded类库完全采用C 封装 并且有着丰富的控件资源以及较好的可移植性 Qt E直接访问FrameBuffer 只需要一个Qt E的动态库就足以替代XServer Xlib和其他嵌入式解决方案的图形工具包 这样做的最显著效果是减少了内存消耗 Qt Embedded Qtopia Qtopia是基于QT Embedded开发的一个嵌入式的窗口系统和应用程序集 Qtopia平台包含在Qt Embedded基础上构建消费电子产品所需要的所有功能 它包括具有整套窗口操作系统的应用程序启动程序 快速应用程序启动 包装系统应用程序安装 红外线 蓝牙通讯 本地化框架 基于通用插件的框架 警报服务器 PIM数据API 游戏和多媒体 输入法以及工作辅助应用程序 Qtopia是一个面向嵌入式Linux的全方位应用程序开发平台 同时也是用于基于Linux的PDA 个人数字助理 智能电话Smartphone 以及其他移动设备的用户界面 简单地说 Qtopia实质上是一组关于PDA和智能电话的应用程序结合 如果需要开发这类产品可以在这组程序的基础上迅速构建出PDA或者智能电话 Qtopia实质上依赖Qt Embedded Qtopia是一个构建于Qt E之上的类似桌面系统的应用环境 相比之下 Qt E是基础类库 QtopiaCore 就是原来的Qt E 从Qt4 1开始改名 把QtopiaCore并到Qtopia的产品线中去了 但实际上QtopiaCore就相当于原来的Qt E 仍然作为基础类库 最近ThrollTech又把QtopiaCore改名叫做QtforEmbeddedLinux了 Qt E的特点 跨平台工具丰富丰富的API函数行需要资源少 功能强大功能可裁剪 Qt主要工具 QmakeQTDesignerQTLinguistQTAssistantuicmoc 元对象编译器 qtdemo Qmake qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具 手写Makefile是比较困难并且容易出错的 尤其是在需要给不同的平台和编译器组合写几个Makefile的情况下 开发者使用qmake project创建一个简单的 项目 文件 进而运行qmake生成所需的Makefile qmake考虑了所有的编译器和平台的依赖性 可以把开发者解放出来只关心他们的代码 Trolltech公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具 qmake也注意了Qt的特殊需求 可以自动的包含moc和uic的连编规则 QTDesigner QTDesigner是一个功能强大的GUI布局与窗体构造器 能够在所有支持平台上 以本地化的视图外观与认知 快速开发高性能的用户界面 通过QTDesigner 可以用拖拽的方式将控件排布在界面上 支持layout 支持signal slot编辑 生成的文件保存为ui格式 ui是xml格式的普通文本文件 默认编码为utf8 所以界面上还可以直接写中文 QTLinguist QTLinguist被称为Qt语言家的Linguist是用于界面国际化的重要工具 使用QTLinguist 开发小组可把应用程序的翻译转换外包给非技术性翻译人员 从而可增加精确度 大大加快本地化处理过程 要注意的是 其实它并不能帮你翻译 它的主要任务只是读取翻译文件 为翻译人员提供友好的翻译界面 QTAssistant QTAssistant类似MSDN的文档查看工具 支持html的子集 图片 超链 文本着色 支持目录结构 关键字索引和全文搜索 可以很方便的查找Qt的API帮助文档 所以是编程必备 使用率最高的工具 uic uic是从XML文件生成代码的用户界面编译器 用来将file ui文件生成file h和file cpp文件 命令如 uic ofile hfile uiuic ofile cppfile ui 但生成的这两个文件不是标准的纯C 代码 通常称为Qt的C 扩展 因为Qt的对象间运用了信号和插槽的通信机制 在文件中用Q OBJECT宏来标识 moc 元对象编译器 moc用来解析一个C 文件中的类声明并且生成初始化对象的C 代码 moc在读取C 源文件 如果发现其中一个或多个类的声明中含有Q OBJECT宏 就给出这个使用Q OBJECT宏的类生成另外一个包含元对象代码的C 元文件 元对象代码对信号插槽机制 运行时的类型信息和动态属性系统是需要的 qtdemo Qt例子和演示程序的加载器 也可以看作是Qt提供的一个有用的工具 有了这个工具 用户可以很方便的查看Qt提供的多姿多彩的例子程序 从中选择自己需要的 不仅可以看到程序运行的情况 还可以查看源码和文档 Qt E开发环境的搭建 Qt E应用程序开发流程搭建Qt X11环境搭建Qt E环境 Qt E应用程序开发流程 Qt E开发环境的搭建 搭建Qt X11环境和Qt E环境先要准备好Qt Qt E源代码及相关编译器 一般来说 发布一个Qt版本的同时也会发布一个相应的Qt E版本 在搭建开发环境的时候 一般来说要求Qt和Qt E的版本号是相同的 目前正在使用的有Qt2 Qt3和Qt4三大类Qt版本 每大类下有很多子版本 目前的最新版本是Qt4 6 2 Qt和Qt E的编译和具体的Linux环境 比如GNU工具链 有关 对于某一Linux环境 有些Qt和Qt E版本的源程序编译可能通不过 另外 Qt2 Qt3的编译比较快 Qt4则很耗时 因每台机器配置不同 一般需要2 12小时 本教材实验使用的版本是Qt4 4 0 包括两个文件 qt embedded linux opensource src 4 4 0 tar bz2qt x11 opensource src 4 4 0 tar gz使用的交叉编译器版本是 gcc 3 4 6 glibc 2 3 6 搭建Qt X11环境 解压缩qt x11 opensource src 4 4 0 tar gz软件包运行configure配置脚本编译Qt源程序安装Qt设置环境变量 搭建Qt E环境 编译 安装tslib1 4触摸屏库编译 安装QT E库 cd root qt4 for arm tarxjvfqt embedded linux opensource src 4 4 0 tar bz2cp atslib1 4 install lib qt embedded linux opensource src 4 4 0 lib cp atslib1 4 install include ts qt embedded linux opensource src 4 4 0 include cdqt embedded linux opensource src 4 4 0 configure embeddedarm xplatformqws linux arm g depths16 little endian no mouse linuxtp qt mouse tslib I root qt4 for arm tslib1 4 install include L root qt4 for arm tslib1 4 install lib qt kbd tty qt kbd usb prefix mnt nfs Trolltech qt embedded 4 4 0makemakeinstall 搭建Qt E环境 embeddedarm 指定处理器平台是arm xplatformqws linux arm g 目标平台为arm linux little endian 目标平台为小端存储格式 depths16 指定每像素的位数 no mouse linuxtp qt mouse tslib 触摸屏协议不支持linuxtp 支持tslib 并在后面添加上刚才编译的tslib的头文件和库 qt kbd usb 键盘支持tty和usb协议 prefix 指定安装路径是 mnt nfs Trolltech qt embedded 4 4 0 prefix选项要特殊注意 该指定目录必须要与实际NFS目录对应 否则字体会出现错误 Qt E应用程序的编译和运行 include includeintmain intargc char argv QApplicationapp argc argv QPushButtonhello HelloWorld hello show QObject connect 主程序hello cpp 宿主机上编译运行 root vm devhello qmake project 1 生成工程文件 root vm devhello qmake 2 生成Makefile root vm devhello make 3 编译 root vm devhello hello 运行hello程序 目标机上编译运行 root vm devhello mnt nfs Trolltech qt embedded 4 4 0 bin qmake project root vm devhello mnt nfs Trolltech qt embedded 4 4 0 bin qmake root vm devhello mak

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论