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

上传人:油条 文档编号:1272387 上传时间:2017-06-04 格式:PPT 页数:39 大小:337KB
返回 下载 相关 举报
嵌入式系统的图形用户界面_第1页
第1页 / 共39页
嵌入式系统的图形用户界面_第2页
第2页 / 共39页
嵌入式系统的图形用户界面_第3页
第3页 / 共39页
嵌入式系统的图形用户界面_第4页
第4页 / 共39页
嵌入式系统的图形用户界面_第5页
第5页 / 共39页
点击查看更多>>
资源描述

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

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

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

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

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

5、己组织在对象树中。当你创建一个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(signal), receiver, SLOT(slot) );,信号和插

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

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

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

12、its()来完成。显示十六进制、八进制、二进制、十进制的数值,您就可以调用函数setHexMode()、setOctMode()、 setBinMode()、setDecMode()来将其设置。,各种按钮,推动按钮单选按钮复选按钮,推动按钮,Qt的组件,推动按钮的描述 推动或者命令按钮是任何GUI(图形用户界面)中最常用的窗口部件,它来命令计算机执行一些操作,或者回答一个问题。典型的按钮有确定(OK)、应用(Apply)、撤消(Cancel)、关闭(Close)、是(Yes)、否(No)和帮助(Help)等。 该按钮是矩形的,并且通常显示一个文本标签来描述它的操作。标签中有下划线的字母(在此它

13、的前面用“&”标明)表明快捷键,比如: QPushButton *pushbutton = new QPushButton(&Help, this); 这个实例中快捷键是Alt+H,并且文本标签将被显示为Help。,推动按钮,推动按钮的成员QPushButton ( QWidget * parent = 0 )构造一个没有文本的推动按钮,参数为parent。QPushButton ( const QString & text, QWidget * parent = 0 )构造一个父对象为parent、文本为text的推动按钮。QPushButton ( const QIcon & icon,

14、const QString & text, QWidget * parent = 0 )构造一个图标为icon、文本为text、父对象为parent的推动按钮。注意:您可以传递一个QPixmap作为一个图标(感谢由C+提供的隐含类型转换)。,推动按钮,QPushButton ()销毁这个推动按钮。void QButton:setText ( const QString & ) 设置这个按钮上显示的文本。void QButton:pressed ()当这个按钮被按下的时候,将要发射该信号。void QPushButton:setMenu ( QMenu * menu )这个按钮与弹出式的菜单me

15、nu联系在一起。这样就可以把一个普通的按钮变成菜单按钮,在该按钮的文本的右边会出现一个倒置的小三角。,推动按钮,推动按钮的实例 该实例的功能,当您按下退出按钮的时候,就会退出系统。以下是该实例的代码:/* main.cpp */#include /当窗口初始化的时候,引用的头文件#include /定义QPushButton对象,引用的头文件int main(int argc,char *argv) QApplication app(argc,argv); /窗体初始化 QPushButton *pushbutton = new QPushButton(Quit); QObject:conne

16、ct(pushbutton,SIGNAL(clicked(),pushbutton,SLOT(close(); pushbutton-show();/显示该窗体 return app.exec();运行该实例的结果,如图所示:,单选按钮,单选按钮的描述QRadioButton窗口部件为单选按钮提供了一个文本标签。QRadioButton是一个能够切换开(选择)或者关(没有选择)的选择按钮。通常单选按钮是用于当前用户选择许多中的一个选项。在同一时刻,单选按钮组中仅仅只有一个按钮被选择;如果用户选择其他按钮,以前选择的按钮将要切换为关闭状态。当一个按钮切换开或者关的时候,它就会发射toggled()信号。如果任何时刻你想触发一个行为来改变按钮的状态的时候,可以连接这个信号。否则,使用isChecked()来查看是否有其他按钮被选择。像上述的QPushButton一样,单选按钮能够显示文本和可选择的小图标。文本能够在构造函数中被设置,或者使用setText()函数;设置图标可以使用setIcon()函数来设置。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号