嵌入式图形界面设计.ppt

上传人:tian****1990 文档编号:14429001 上传时间:2020-07-20 格式:PPT 页数:65 大小:2.14MB
收藏 版权申诉 举报 下载
嵌入式图形界面设计.ppt_第1页
第1页 / 共65页
嵌入式图形界面设计.ppt_第2页
第2页 / 共65页
嵌入式图形界面设计.ppt_第3页
第3页 / 共65页
资源描述:

《嵌入式图形界面设计.ppt》由会员分享,可在线阅读,更多相关《嵌入式图形界面设计.ppt(65页珍藏版)》请在装配图网上搜索。

1、第8章 嵌入式图形界面设计,2020/7/20,嵌入式图形系统简介 Qt编程,教学要点,1 嵌入式图形系统简介,Linux本身没有图形界面, Linux现在的图形界面的实现只是Linux下的应用程序实现的。 图形界面并不是Linux 的一部分,Linux只是一个基于命令行的操作系统Linux和Xfree的关系就相当于当年的DOS和 Windows3.0一样,Windows3.0不是独立的操作系统,它只是 DOS的扩充,是DOS下的应用程序级别的系统,不是独立的操作系统,同样Xfree只是Linux下的一个应用程序而已,不是系统的一部分。 X的存在可以方便用户使用电脑。,Win95及以后的版本就

2、不一样了,图形界面是操作系统的一部分,图形界面在系统内核中就实现了。 没有了图形界面 ,Windows就不成为Windows了;但Linux却不一样,没有图形界面,Linux还是Linux,很多装Linux的Web服务器就根本不装X服务器。这也是Windows和Linux的重要区别之一。,X Window :业界标准 Open Look:来自SUN与AT int mark() const return myMark; public slots: void setMark(int newMark); signals: void markChanged(int newMark); private:

3、 int myMark; ;,Signal和Slot的声明 (2/2),signal的发出一般在事件的处理函数中,利用emit发出signal,在下面的例子中在在事件处理结束后发出signal void Student:setMark(int newMark) if (newMark!= myMark) myMark = newMark; emit markChanged(myMark); ,Signal和Slot的连接 (1/2),在signal和slot声明以后,需要使用connect()函数将它们连接起来。 connect()函数属于QObject类的成员函数,它能够连接signal和s

4、lot,也可以用来连接signal和signal,函数如下: bool QObject:connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member ) static 其中第一个和第三个参数分别指出signal和slot是属于那个对象或组件。,Signal和Slot的连接(2/2),在使用connect()函数进行连接的时候,还需要用到SIGNAL()和SLOT()这两个宏,使用方法如下: QLabel *label = new QLabel; QScro

5、llBar *scroll = new QScrollBar; QObject:connect( scroll,SIGNAL(valueChanged(int), label, SLOT(setNum(int) );,Signal和Slot的连接方式,取消Signal和Slot连接,取消一个连接 disconnect(lcd,SIGNAL(overflow(),this,SLOT(handleMathError(); 取消一个连接不是很常用,因为Qt会在一个对象被删除后,自动取消这个对象所包含的所有的连接,属性,属性也是一个类的成员 在类声明中用宏Q_PROPERTY来声明 只能在继承于QOb

6、ject的子类中声明 设置和得到属性的成员函数如下: QObject:setProperty() QMetaObject:propertyNames() QMetaObject:property (),QObject类,QObject是Qt类体系的唯一基类,是Qt各种功能的源头,就象MFC中的CObject和Delphi中的TObject。 connect():提供信号槽机制 对象树:QObject在对象树中组织它们自己。当以另外一个对象作为父对象来创建一个QObject时,它就被添加到父对象的children() 列表中,并且当父对象被删除的时候,它也会被删除。这种机制很好的适合了图形用户界

7、面应用对象的需要。 事件:事件是由窗口系统或Qt本身对各种事务的反应而产生的。当用户按下、释放一个键或鼠标按钮,一个键盘或鼠标事件被产生;当窗口第一次显示,一个绘图事件产生,从而告知最新的可见窗口需要重绘自身。大多数事件是由于响应用户的动作而产生的,但还有一些,比如定时器等,是由系统独立产生的。,事件运行机制,事件循环,QApplication,QApplication和QWidget都是QObject类的子类。 QApplication类负责GUI应用程序的控制流和主要的设置,它包括主事件循环体,负责处理和调度所有来自窗口系统和其他资源的事件,并且处理应用程序的开始、结束以及会话管理,还包括

8、系统和应用程序方面的设置。对于一个应用程序来说,建立此类的对象是必不可少的。,QWidget,QWidget类是所有用户接口对象的基类,它继承了QObject类的属性。组件是用户界面的单元组成部分,它接收鼠标、键盘和其它从窗口系统来的事件,并把它自己绘制在盘屏幕上。 QWidget类有很多成员函数,但一般不直接使用,而是通过子类继承来使用其函数功能。如,QPushButton、QlistBox等都是它的子类。,一个完整的Qt程序,1 #include 2 #include 3 int main (int argc, char *argv ) 4 5 QApplication app (argc

9、, argv); 6 QLabel *label = new QLabel (Hello Qt!); 7 label-show (); 8 return app. exec (); 9 ,2.2 Qt Designer,直接使用代码来直接编写GUI无疑是非常痛苦的,好在Qt提供了界面开发工具:Qt Designer。 Qt应用程序除了使用手工编写代码的方式外,还可以用过Qt Designer来完成。 Qt Designer的功能十分强大,界面类似于VB,而且还提供了大量可供编程使用的组件。,基于Qt Designer程序设计 (1/4),在使用Qt Designer程序开发时,一般要涉及到下面

10、几个步骤: 1. 创建和初始化子部件 2. 设置子部件布局 3. 设置Tab键次序(不是必须) 4. 建立信号与插槽的连接 5. 编写事件处理函数,1.创建并布置部件,2.对部件使用布局管理,3.建立信号与插槽的连接,基于Qt Designer程序设计 (2/4),基于Qt Designer程序设计 (3/4),编辑两个部件之间信号与插槽之间的连接方式,基于Qt Designer程序设计 (4/4),Qt Designer下不同风格的预览,Qt Designer工作过程,Qt Designer将工程文件组织成.ui的文件 由.ui文件生成 .h文件 .ui -xml UIC -o form.h

11、 form.ui 需要注意的是,在Qt3中使用例如UIC -o form.cpp -i form.h form.ui这样的方式来生成表单的CPP文件,但在Qt4中,UIC已经作了修改,不能输出表单的CPP文件 由C+编译器编译所有.h和.cpp文件,Qt Designer 功能框图,Qt程序开发过程,1. 使用designer 设计界面,添加窗口组件 建立信号槽连接 编写事件处理函数 保存工程为.ui文件,得到一个主窗口类 2. 编写main.cpp文件进行主窗口类的实例化及显示 3. 设置编译所需的环境变量 QtDIR = 4. 使用qmake生成.pro工程文件 rootIntel Qt4

12、qmake -project 5. 通过qmake自动生成makefile文件 rootIntel Qt4qmake 6. make生成可执行文件 7. 运行,2.3 Qt/E和Qtopia开发模型,Qt/E与Qt/X11比较,Qt/E与Qt/X11比较,Qt/Embedded通过Qt API 与Linux I/O设施直接交互,成为嵌入式Linux端口。同Qt/X11相比, Qt/E很节省内存,不需要X服务器或Xlib库,它在底层摈弃了Xlib,采用Framebuffer(帧缓存)作为底层图形接口。 同时,将外部输入设备抽象为keyboard和mouse输入事件。 Qt/Embedded 的应

13、用程序可以直接写内核缓冲帧,这可避免开发者使用繁琐的Xlib/Server系统。,Qtopia,Qtopia是一种全方位的应用开发平台,可用于基于嵌入式Linux的PDA、移动电话、Web pads、以及其他移动计算设备。 Qtopia构建于Qt/E之上,是专为基于Linux的消费电子产品提供和创建图形用户界面而设计的。常见的有两种版本: Qtopia Phone版:专为基于Linux的智能电话和多功能电话设计。 Qtopia PDA版:专为基于Linux的PDA设计。,Qtopia特色,视窗操作系统 同步窗口 开发环境 本地化支持 游戏和多媒体 PIM应用程序 输入法 个性化选项 Inter

14、net应用程序 java集成 无线支持,Qt/E开发模型 (1/2),嵌入式软件开发通常都采用交叉编译的方式进行,基于Qt/E和Qtopia的GUI应用开发也采用这样的模式。先在宿主机上调试应用程序,调试通过后,经过交叉编译移植到目标板上。 Qt/E直接写入帧缓存,在宿主机上则是通过qvfb(virtual Framebuffer)来模拟帧缓存。qvfb是X窗口用来运行和测试Qtopia应用程序的系统程序。qvfb使用了共享内存存储区域(虚拟的帧缓存)来模拟帧缓存并且在一个窗口中模拟一个应用程序来显示帧缓存,显示的区域被周期性的改变和更新。,Qt/E开发模型 (2/2),宿主机移植所需环境变量

15、声明: export QTDIR=/usr/lib/Qt4export QTINC=/usr/lib/Qt4/includeexport QTLIB=/usr/lib/Qt4/libexport PATH=$QTDIR/bin:$PATH,Qt/E信号与插槽,信号与插槽是Qt自定义的一种通信机制,它独立于标准的从C/C+语言。它的实现必须借助于moc(Meta Object Compiler)的Qt工具,是一个C+预处理程序,为高层次的事件处理自动生成所需要的附件代码。 所谓图形用户接口的应用,就是对用户的动作作出响应。程序员则必须把事件和相关代码联系起来,这样才能对事件作出正确的响应。,Qt

16、/E信号与插槽,所有从QObject或其子类(例如Qwidget)派生的类都能够包含信号和插槽。 当对象改变状态时,信号就由该对象发射(emit)出来。 插槽用于接收信号,但它们是普通的对象成员函数。 一个插槽并不知道是否有任何消息与自己相连。用户可以将很多信号与一个插槽相连,也可将单个消息与多个插槽进行链接。,Qt/E信号与插槽,信号: void mysignal(int x); 插槽: void myslot(int x); 信号与插槽关联: connect(abutton, SIGNAL(clicked),SLOT(quit);,建立Qt/E开发环境,安装Qt for X11源代码 #

17、tar xvzf Qt-x11-opensource-src-4.4.0.tar.gz # cd Qt-x11-opensource-src-4.4.0 #./build.sh 安装Qt/E 源代码 #tar xvzf Qtopia-core-opensource-src-4.3.3.tar.gz # cd Qtopia-core-opensource-src-4.3.3 #./build.sh (shell 程序),设置链接库,当在PC上模拟Qt/E的运行时,需要用到对应Qt版本的库文件。 设置LD_LIBRARY_PATH = /usr/local/Qt4/lib。,运行程序,设置环境变量 export QTDIR=/usr/qpe export QPEDIR=/usr/qpe export KDEDIR=/usr/qpe export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/qpe/lib/ export QWS_SIZE=640 x480 export QWS_MOUSE_PROTO=TPanel:/dev/input/event0 USB export LANG=zh_CN 运行Qt/E程序 helloword -qws,

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