嵌入式系统的图形用户界面

上传人:san****019 文档编号:15782439 上传时间:2020-09-05 格式:PPT 页数:39 大小:337.10KB
收藏 版权申诉 举报 下载
嵌入式系统的图形用户界面_第1页
第1页 / 共39页
嵌入式系统的图形用户界面_第2页
第2页 / 共39页
嵌入式系统的图形用户界面_第3页
第3页 / 共39页
资源描述:

《嵌入式系统的图形用户界面》由会员分享,可在线阅读,更多相关《嵌入式系统的图形用户界面(39页珍藏版)》请在装配图网上搜索。

1、嵌入式系统的图形用户界面,预习检查,嵌入式平台有哪些主流的GUI? QT的特点是哪些? 信号和插槽的概念?,2,本章目标,熟悉嵌入式平台下主流GUI 掌握嵌入式QT的组成结构和特点 掌握一个简单QT程序 掌握布局和按钮控件,本章结构,常见的Linux GUI 工具,X Windows(UNIX/Linux) Qt GTK Clutter Java (Android) DirectFB MiniGUI MicroWindows/NanoX OpenGL/OpenglES,图形用户界面,QT- C+图形用户界面库,Qt是一个跨平台的C+图形用户界面应用程序框架 ,由Nokia公司出品。 目前产品包

2、括Qt、Qt/Embedded、快速开发工具Qt Designer、国际化工具Qt Linguist等部分。 Qt支持Unix,Linux,Windows,WinCE,Symbian平台 Qt是基于面向对象的C+语言,它提供了信号(signal)和槽(slot)的对象通信机制,具有可查询和可设计的属性,以及强大的事件和事件过滤器。同时,它还具有字符国际化,即支持根据上下文进行国际化字符串翻译。许多Qt特性基于QObject的继承,通过标准C+技术实现,Qt的本质是一些应用程序库, 它以动态库,静态库和头文件的形式给出. Qt是跨平台库支持平台包括Linux, Mac OS, windows,嵌

3、入式Linux, windows CE, Symbian, 提供C+语言接口. 建议先不要使用QtCreator、QDesigner这些集成开发环境, 而应该直接学习Qt库中类的使用,以知其所以然.,QT/Embedded简介,QT特点,优良的跨平台特性 面向对象 Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好 丰富的API Qt 包括多达400个以上的 C+ 类,同时不断扩展 支持 2D/3D 图形渲染,支持 OpenGL XML 支持 开放源码,Qt程序结构,/main.cpp #include #include int main(int argc, char* argv

4、) /每个程序都要有一个QApplication对象 QApplication app(argc, argv); QWidget win; /创建窗口对象 win.show(); /显示窗口 return app.exec(); /进入事件循环 /事件循环是响应鼠标输入、信号槽的基础,创建工程文件的和可执行文件,qmake -project /生成工程文件.pro qmake /qmake分析源文件生成Makefile make /执行Makefile编译,QObject类,Object类是所有Qt对象的唯一基类,QObject是对象模型的中心 ,这个模型的中心特征就是一种用于无缝对象通讯的被

5、叫做信号和槽的非常强大的机制 QObject把它们自己组织在对象树中。当你创建一个QObject作为其它对象的父对象,这个对象会在父对象中自动调用insertChild()并且可以在父对象的children()列表中显示出来 事件:事件是由窗口系统或qt本身对各种事务的反应而产生的。当用户按下、释放一个键或鼠标按钮,一个键盘或鼠标事件被产生;当窗口第一次显示,一个绘图事件产生,从而告知最新的可见窗口需要重绘自身。大多数事件是由于响应用户的动作而产生的,但还有一些,比如定时器等,是由系统独立产生的。,QApplication类,QApplication类管理图形用户界面应用程序的控制流和主要设置

6、,它包含主事件循环,负责处理和调度所有来自窗口系统和其他资源的事件, 处理应用程序的开始、结束以及会话管理 系统和应用程序方面的设置,QWidget类,QWidget类是所有用户界面对象的基类,它继承了QObject类的属性。,窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。 QWidget类有很多成员函数,但一般不直接使用,而是通过子类继承来使用其函数功能。如,QPushButton、QlistBox等都是它的子类 一个没有父窗口部

7、件的窗口部件一直是顶级窗口部件。 非顶级窗口部件是子窗口部件。它们是它们的父窗口部件中的子窗口。你通常不能在视觉角度从它们的父窗口部件中辨别一个子窗口部件。,布局,使用Qt的布局管理类 :,这些类能够给出所有类型控件的默认值,能够根据控件的字体,样式,内容得到不同的控件的sizeHint。布局管理类能够得到控件的最大,最小尺寸,在字体,内容或者窗口改变时自动调整布局。 QHBoxLayout,QVBoxLayout,QGridLayout是三个最重要的布局管理器 。这些类从QLayout继承,QLayout提供布局最基本的框架。,实现对象间通信的技术 用户事件:指程序的用户所产生的事件,例如:

8、点击鼠标 程序事件:指程序所产生的事件,例:当用户点击鼠标后程序退出 发射信号:“发出”一个信号。例:当你点击鼠标时,将发射(clicked)信号,为了发射信号,使用emit关键字 MOC:元对象编译器,用于构造用户自己的信号和槽,信号和插槽机制,插槽:是标准的成员函数(作为类成员的函数),但是增加了一些特殊的功能使它们能够连接到信号,每当槽所连接的信号被发射时,槽(函数)就被执行。 信号:一种特殊的成员函数,它们被定义为当某个事件发生时就被发射,之后执行所有被连接的槽 使用信号和插槽非常简单,只需要编写一行代码就能够将用户事件和程序事件连接起来 connect( sender, SIGNAL

9、(signal), receiver, SLOT(slot) );,信号和插槽机制,信号和插槽机制,在Qt中大多数类都继承自QObject,继承自它的类都支持信号与槽机制。 信号与槽泛泛的说就是一种对象间的通信机制,一个对象发送信号,会导致另一个对象的槽函数被调用,槽函数是一个对象的成员函数。哪个对象的信号触发哪个对象的槽函数需要由connect函数事先绑定。信号是一个没有函数体的成员函数,有点类似消息或纯虚函数(但不是纯虚函数)。 在Qt中信号与槽都可以由程序员自定义,许多Qt已有的类中已经定义有信号与槽。,一个信号可以被连接到多个槽 connect(inputBox, SlGNAL(val

10、ueChanged(int), staticBox,SLOT(setValue(int); connect(inputBox, SIGNAL(vaIueChanged(int), okButton, SLOT(setTittIe(int);,信号和插槽机制,信号和插槽机制,多个信号可以被连接到一个槽 connect(doPlusBox, SIGNAL(overflow(), this, SLOT(mathError(); connect(doMinusBox, SIGNAL(lessZero(), this,SLOT(mathError0);,信号和插槽机制,一个信号可以被连接到另外一个信号

11、connect(lineEdit, SIGNAL(textChanged(), this, SIGNAL(updateRecord(); 连接可以随时移除 disconnect(doPlusBox, SIGNAL(overflow(), this, SLOT(mathError();,以下是一个信号与槽的连接图,信号和插槽机制,控件和功能类示例,模拟液晶时钟 布局示例 各种按钮,模拟液晶时钟,QLCDNumber 控件显示一个LCD数字风格的文字,QLCDNumber窗口部件能够在LCD上面显示十进制、十六进制、八进制、二进制的数字。可以利用display()槽与数据源进行连接,能够重载五个任

12、意类型的display()。 改变LCD的显示范围,可以通过调用函数setNumDigits()来完成。 显示十六进制、八进制、二进制、十进制的数值,您就可以调用函数setHexMode()、setOctMode()、 setBinMode()、setDecMode()来将其设置。,各种按钮,推动按钮 单选按钮 复选按钮,推动按钮,Qt的组件,推动按钮的描述 推动或者命令按钮是任何GUI(图形用户界面)中最常用的窗口部件, 它来命令计算机执行一些操作,或者回答一个问题。典型的按钮有确定 (OK)、应用(Apply)、撤消(Cancel)、关闭(Close)、是(Yes)、否(No)和 帮助(H

13、elp)等。 该按钮是矩形的,并且通常显示一个文本标签来描述它的操作。标 签中有下划线的字母(在此它的前面用“ 这个实例中快捷键是Alt+H,并且文本标签将被显示为Help。,推动按钮,推动按钮的成员 QPushButton ( QWidget * parent = 0 ) 构造一个没有文本的推动按钮,参数为parent。 QPushButton ( const QString /窗体初始化 QPushButton *pushbutton = new QPushButton(Quit); QObject:connect(pushbutton,SIGNAL(clicked(),pushbutto

14、n,SLOT(close(); pushbutton-show();/显示该窗体 return app.exec(); 运行该实例的结果,如图所示:,单选按钮,单选按钮的描述 QRadioButton窗口部件为单选按钮提供了一个文本标签。 QRadioButton是一个能够切换开(选择)或者关(没有选择)的选择按钮 。通常单选按钮是用于当前用户选择许多中的一个选项。在同一时刻, 单选按钮组中仅仅只有一个按钮被选择;如果用户选择其他按钮,以前 选择的按钮将要切换为关闭状态。 当一个按钮切换开或者关的时候,它就会发射toggled()信号。如果任 何时刻你想触发一个行为来改变按钮的状态的时候,可以

15、连接这个信号。 否则,使用isChecked()来查看是否有其他按钮被选择。像上述的 QPushButton一样,单选按钮能够显示文本和可选择的小图标。文本能 够在构造函数中被设置,或者使用setText()函数;设置图标可以使用 setIcon()函数来设置。,单选按钮,单选按钮的成员 QRadioButton:QRadioButton ( QWidget * parent = 0 ) 构造一个单选按钮的窗口组件,但是该组件没有文本或者图象映 射。parent参数传递给QAbstractButton构造函数。 QRadioButton:QRadioButton ( const QString

16、 & text, QWidget * parent = 0 ) 构造一个单选按钮的窗体组件,该组件的参数为parent和text字符 串。 parent参数传递给QAbstractButton构造函数。,复选按钮,复选按钮的描述 QCheckBox窗口部件提供一个带文本标签的复选按钮。 QCheckBox和QRadioButton都是选项按钮。 QCheckBox能够在开(选中)或者关(未选中)之间切换。 QCheckBox和QRadioButton的区别是在于对用户选择的限制。单选按 钮定义了“多选一”的选择,而复选按钮定义了“多选多”的选择。 QButtonGroup在视觉上能够把许多的复

17、选按钮组合在一起,成为一个 按钮组。 无论复选按钮选中或者是未选中,它都会发射一个信号toggled()。 在任何时刻,如果您想改变复选按钮的状态的时候,需要连接toggled() 信号触发这个行为。您也可以利用isChecked()函数来查询复选按钮是否 被选中。,复选按钮,除了常用的选中和未选中两个状态,QCheckBox还可以任意选择 第三种状态来表明“没有改变”。当您需要给用户一个选中或者未选中 复选按钮的选择时,这是非常有用的。如果您需要第三种状态,可以通 过setTristate()来使它生效,利用checkState()函数来查询当前的切换状 态。 与QPushButton一样,

18、复选按钮可以显示文本或者任意的小图标。 文本可以通过构造函数或者setText()来设置,图标可以通setIcon()来设 置。,复选按钮,复选按钮的成员 QCheckBox:QCheckBox ( QWidget * parent = 0 ) 构造一个参数为parent的复选按钮,但是该按钮不显示文本信息。 parent参数传递给QAbstractButton构造函数。 QCheckBox:QCheckBox ( const QString & text, QWidget * parent = 0 ) 构造一个参数为parent和text的复选按钮。parent参数传递给 QAbstract

19、Button构造函数。 Qt:CheckState QCheckBox:checkState () const 返回复选框的复选状态。也可以参考setCheckState()函数和 Qt:CheckState。,复选按钮,void QCheckBox:setCheckState ( Qt:CheckState state ) 参数state是用来设置复选框的复选状态。 void QCheckBox:stateChanged ( int state ) signal 当复选框的状态改变的时候,就是发射stateChanged()信号。也就是说, 用来检查用户选择还是没有选择。 效果:,阶段总结,QT是用于多种平台图形界面程序开发的C+工具包 OtEmbedded是适用于嵌入式设备开发的QT版本 信号和槽机制是Qt编程的基础。它使程序员可以方便的把这个程序的对象绑定在一起,但又不需要让它们互相紧密关联。,阶段练习,QT/Embedeed使用什么语言进行开发的? 信号和插槽的特点是什么?,本章总结,实验,实验一:完成简单的HelloWorld窗口程序 任务1:编写helloworld程序代码 任务2:编译运行程序,实验1,注意事项 提示1: 编译第一步使用qmake project 编译第二步使用qmake 编译第三步使用make,

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!