




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式用户图形界面编程 嵌入式用户图形界面编程 课程目的了解嵌入式图形系统掌握QT E开发环境 关键技术通过实例熟悉基于Qt E的嵌入式GUI设计 1 嵌入式图形系统简介 1 1Linux图形系统的发展史linux本身没有图形界面 linux现在的图形界面的实现只是linux下的应用程序实现的 1 嵌入式图形系统简介 1 1Linux图形系统的发展史图形界面并不是linux的一部分 linux只是一个基于命令行的操作系统 linux和Xfree的关系就相当于当年的DOS和windows3 0一样 windows3 0不是独立的操作系统 它只是DOS的扩充 是DOS下的应用程序级别的系统 不是独立的操作系统 同样XFree只是linux下的一个应用程序而已 不是系统的一部分 1 嵌入式图形系统简介 1 1Linux图形系统的发展史但是X的存在可以方便用户使用电脑 WINDOWS95及以后的版本就不一样了 他们的图形界面是操作系统的一部分 图形界面在系统内核中就实现了 没有了图形界面windows就不成为windows了 但linux却不一样 没有图形界面linux还是linux 很多装linux的WEB服务器就根本不装X服务器 这也是WINDOWS和linux的重要区别之一 1 嵌入式图形系统简介 1 1Linux图形系统的发展史XWindow 业界标准OpenLook 来自SUN与AT TMotif 来自IBM HP的OSFCDE UNIX的标准图形界面QT KDE的开发基础GNOME 信仰的产物 1 嵌入式图形系统简介 1 2嵌入式图形系统的发展史早期嵌入式系统功能简单 对图形用户界面需求并不是太大 而且当时的图形系统对硬件要求太高 在嵌入式上实现几乎没有可能 后来 应市场需求产生一些高级GUI工具包 使得嵌入式linux下的图形开发成为可能 而且易于编写出更好 更漂亮的界面 1 嵌入式图形系统简介 1 3常用的几种嵌入式GUI工具包紧缩的XWindow系统MicroWindowsMiniGUIOpenGUIQt Embedded 1 3 1TinyX TinyX 是标准X Windows在嵌入式系统的小巧实现 作为一个图形环境 X Windows是成功的 但由于在体系接口上的原因 限制了它对游戏 多媒体的支持能力 1 3 2Microwindows Mirowindows是嵌入式系统中广为使用的一种图形用户接口 其官方网站是 http www microwindows org 这个项目的早期目标是在嵌入式Linux平台上提供和普通个人电脑上类似的图形用户界面 MicroWindows 其主要特色在于提供了 体系结构 同时也提供了相对完善的图形功能 但却无任何硬件加速能力 图形引擎中也存在着许多未经优化的低效算法 1 3 3MiniGUI MiniGUI是由北京飞漫软件技术有限公司主持的一个自由软件项目 遵循GPL条款 其目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统 MiniGUI为应用程序定义了一组轻量级的窗口和图形设备接口 利用这些接口 每个应用程序可以建立多个窗口 而且可以在这些窗口中绘制图形 用户也可以利用MiniGUI建立菜单 按钮 列表框等常见的GUI元素 1 3 4OpenGUI OpenGUI基于一个用汇编实现的x86图形内核 提供了一个高层的C C 图形 窗口接口 它的资源消耗小 可移植性差 不支持多进程 1 3 5主流的Linux窗口系统 2 QT E Qt Embedded 简称QtE 是一个专门为嵌入式系统设计图形用户界面的工具包 Qt是挪威Trolltech软件公司的产品 它为各种系统提供图形用户界面的工具包 QtE就是Qt的嵌入式版本 2 QT E 注意 QT与QT Embedded的区别 2 QT E 2 QT E QT类库架构 2 1QT E特点 2 1 1跨平台可支持的平台包括 MS Windows95 Windows98 WindowsNT4 0 Windows2000 WindowsXP Unix X11Linux SunSolaris HP UX CompaqTrue64Unix IBMAIX SGIIRIX和很多其它X11平台 MacintoshiMacOSX 嵌入式的 包含有FramBuffer的Linux平台 2 1QT E特点 2 2 2资源丰富trolltech的主页 2 1QT E特点 2 2 3工具丰富提供了构建 qmake 可视化设计 uic和qdesigner 国际化 linguist 文档系统 assistant 等一系列非常好用的工具 2 1QT E特点 2 2 4丰富的API函数Qt Embedded也可以看成是一组用于访问嵌入式设备的QtC API Qt Embedded的Qt X11 Qt Windows和Qt Mac版本提供的都是相同的API和工具 2 1QT E特点 2 2 5运行需要资源少 功能强大相对X窗口下的嵌入解决方案而言 Qt Embedded只要求一个较小的存储空间 Flash 和内存 Qt Embedded可以运行在不同的处理器上部署的Linux系统 只要这个系统有一个线性地址的缓冲帧并支持C 的编译器 2 1QT E特点 2 2 6功能可裁减Qt Embedded提供了大约200个可配置的特征 3QTOPIA 3 1简介Qtopia是基于Qt编写的一个用于手持设备的用户信息管理软件 它集成了很多实用的程序 市面上买到的预装linux操作系统的arm9开发版 开机后看到的图形界面多是qtopia 3QTOPIA 3 1简介 3QTOPIA 3 2QTE和Qtopia开发模型 课堂回顾 1 QT与QT E最大的不同 2 QTOPIA与QT的关系 3 众多嵌入式图形开发库中 为什么大多数人选择QT E 4QTE开发环境搭建 宿主机移植所需工具及环境变量声明 5QTE开发关键技术 1 QT对象模型元对象系统信号和插槽2 QObject类对象树事件处理 元对象系统 是一个C 扩展 使得QT更适合真正的组件GUI编程使用元编译器moc产生能被标准C 编译器访问的附加C 代码带有moc预编译器的C 基本上提供了面向对象的灵活性 并保持了C 的执行效率和扩展性 信号和插槽 在Qt程序中 利用信号 signal 和插槽 slot 机制进行对象间的通信signal和slot机制真正实现了封装的概念 slot除了接收signal之外和其它的成员函数没有什么不同 而且signal和slot之间也不是一一对应的 事件处理的方式也是回调当对象状态发生改变的时候 发出signal通知所有的slot接收signal 尽管它并不知道哪些函数定义了slot 而slot也同样不知道要接收怎样的signal Signal和Slot的声明 1 2 在Qt程序设计中 凡是包含signal和slot的类中都要加上Q OBJECT的定义 Signal和Slot的声明 2 2 signal的发出一般在事件的处理函数中 利用emit发出signal 在下面的例子中在在事件处理结束后发出signal Signal和Slot的连接 1 2 在signal和slot声明以后 需要使用connect 函数将它们连接起来 connect 函数属于QObject类的成员函数 它能够连接signal和slot 也可以用来连接signal和signal 函数原形如下 boolQObject connect constQObject sender constchar signal constQObject receiver constchar member 其中第一个和第三个参数分别指出signal和slot是属于那个对象或组件 Signal和Slot的连接 2 2 在使用connect 函数进行来接的时候 还需要用到SIGNAL 和SLOT 这两个宏 使用方法如下 信号与插槽的连接方式 QObject类 QObject是Qt类体系的唯一基类 是Qt各种功能的源头活水 就象MFC中的CObject和Dephi中的TObject对象树 QObject在对象树中组织它们自己 当你以另外一个对象作为父对象来创建一个QObject时 它就被添加到父对象的children 列表中 并且当父对象被删除的时候 它也会被删除 这种机制很好的适合了图形用户界面应用对象的需要 事件 事件是由窗口系统或qt本身对各种事务的反应而产生的 当用户按下 释放一个键或鼠标按钮 一个键盘或鼠标事件被产生 当窗口第一次显示 一个绘图事件产生 从而告知最新的可见窗口需要重绘自身 大多数事件是由于响应用户的动作而产生的 但还有一些 比如定时器等 是由系统独立产生的 事件运行机制 QApplication QApplication和QWidget都是QObject类的子类QApplication类负责GUI应用程序的控制流和主要的设置 它包括主事件循环体 负责处理和调度所有来自窗口系统和其他资源的事件 并且处理应用程序的开始 结束以及会话管理 还包括系统和应用程序方面的设置 对于一个应用程序来说 建立此类的对象是必不可少的 QWidget QWidget类是所有用户接口对象的基类 它继承了QObject类的属性 组件是用户界面的单元组成部分 它接收鼠标 键盘和其它从窗口系统来的事件 并把它自己绘制在盘屏幕上QWidget类有很多成员函数 但一般不直接使用 而是通过子类继承来使用其函数功能 如 QPushButton QlistBox等都是它的子类 对象树 6实例一 一 代码编辑二 程序编译 include includeintmain intargc char argv QApplicationa argc argv QPushButtonhellobtn Helloworld 0 hellobtn resize 100 20 a setMainWidget include includeintmain intargc char argv QApplicationa argc argv QPushButtonhellobtn Helloworld 0 hellobtn resize 100 20 a setMainWidget include includeintmain intargc char argv QApplicationa argc argv QPushButtonhellobtn Helloworld 0 hellobtn resize 100 20 a setMainWidget include includeintmain intargc char argv QApplicationa argc argv QPushButtonhellobtn Helloworld 0 hellobtn resize 100 20 a setMainWidget include includeintmain intargc char argv QApplicationa argc argv QPushButtonhellobtn Helloworld 0 hellobtn resize 100 20 a setMainWidget include includeintmain intargc char argv QApplicationa argc argv QPushButtonhellobtn Helloworld 0 hellobtn resize 100 20 a setMainWidget include includeintmain intargc char argv QApplicationa argc argv QPushButtonhellobtn Helloworld 0 hellobtn resize 100 20 a setMainWidget include includeintmain intargc char argv QApplicationa argc argv QPushButtonhellobtn Helloworld 0 hellobtn resize 100 20 a setMainWidget include includeintmain intargc char argv QApplicationa argc argv QPushButtonhellobtn Helloworld 0 hellobtn resize 100 20 a setMainWidget 6实例一 二 程序编译1 生成工程文件qmake project2 生成Makefileqmake3 编译make 6实例二 一 工程创建二 界面设计三 代码编辑四 程序编译 6实例三 信号与槽 一 工程创建二 界面设计三 代码编辑四 程序编译 课堂回顾 1 怎样将信号连接到槽 2 能否将多个槽连接到一个信号 7QtDesigner 直接使用代码来直接编写GUI无疑是非常痛苦的 好在QT提供了界面开发工具 QTdesignerQt应用程序除了使用手工编写代码的方式外 还可以用过QtDesinger来完成QtDe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025有限责任公司合作合同
- 2025版补充采购合同范本
- 2025合同范本-劳动局劳动合同样本
- 2025书面合同内容:汽车租赁合同纠纷起诉状
- CWPC2025第十一届中国国际风电复合材料创新发展论坛暨展览会:新时期下风电材料如何创新突破
- 全球心血管创新药研发管线动态与2025年市场前景分析报告
- 《商法海商法》课程教学大纲
- DB6101T 167-2020 阳光玫瑰葡萄栽培技术规程
- 共同承租厂房安全管理协议书4篇
- 红外线与紫外线专项练习题(有答案)
- 《关于加强和改进新时代师德师风建设的意见》培训课件
- 影视广告创意设计和制作PPT完整全套教学课件
- 第十四章滚动轴承相关设计
- GB/T 14456.1-2017绿茶第1部分:基本要求
- 远离电子烟主题班会课件
- 设备维护保养手册
- ZYHZYHC系列自控远红外电焊条烘干炉使用说明书
- 高中政治统编版(2022)必修3(教案)我国法治建设历程(完整文档)
- 市场营销策划(第五版)第08章 促销策划
- 呋喃树脂msds
- 落实乡村振兴战略山核桃产业振兴五年行动方案
评论
0/150
提交评论