嵌入式用户图形界面编程(QT)-共69张课件

PPT
  • 阅读 95 次
  • 下载 0 次
  • 页数 69 页
  • 大小 535.000 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
嵌入式用户图形界面编程(QT)-共69张课件
可在后台配置第一页与第二页中间广告代码
嵌入式用户图形界面编程(QT)-共69张课件
可在后台配置第二页与第三页中间广告代码
嵌入式用户图形界面编程(QT)-共69张课件
可在后台配置第三页与第四页中间广告代码
嵌入式用户图形界面编程(QT)-共69张课件
嵌入式用户图形界面编程(QT)-共69张课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 69
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】嵌入式用户图形界面编程(QT)-共69张课件.ppt,共(69)页,535.000 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-45571.html

以下为本文档部分文字说明:

www.chinaEDA.cn嵌入式用户图形界面编程课程目的1.了解嵌入式图形系统2.掌握QT/E开发环境、关键技术3.通过实例熟悉基于Qt/E的嵌入式GUI设计www.chinaEDA.cn1、嵌入式图形系统简介1.1Linux图形系统的发展史linux本身没有图形界面,linu

x现在的图形界面的实现只是linux下的应用程序实现的。www.chinaEDA.cn1、嵌入式图形系统简介1.1Linux图形系统的发展史图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统linux和Xfree的关系就相当于

当年的DOS和WINDOWS3.0一样,windows3.0不是独立的操作系统,它只是DOS的扩充,是DOS下的应用程序级别的系统,不是独立的操作系统,同样XFree只是linux下的一个应用程序而已,不是系统的一部分。www.chinaEDA.cn1、嵌入式图形系统简介1.1

Linux图形系统的发展史但是X的存在可以方便用户使用电脑。WINDOWS95及以后的版本就不一样了,他们的图形界面是操作系统的一部分,图形界面在系统内核中就实现了,没有了图形界面windows就不成为windows了,但linux却不一样,没有图

形界面linux还是linux,很多装linux的WEB服务器就根本不装X服务器。这也是WINDOWS和linux的重要区别之一。www.chinaEDA.cn1、嵌入式图形系统简介1.1Linux图形系统的发展史XWin

dow:业界标准OpenLook:来自SUN与AT&TMotif:来自IBM/HP的OSFCDE:UNIX的标准图形界面QT:KDE的开发基础GNOME:信仰的产物www.chinaEDA.cn1、嵌入式图形系统简介1.2嵌入

式图形系统的发展史1.早期嵌入式系统功能简单,对图形用户界面需求并不是太大。而且当时的图形系统对硬件要求太高,在嵌入式上实现几乎没有可能。2.后来,应市场需求产生一些高级GUI工具包,使得嵌入式linux下的图形开发成为可能,而且易于编写出更好、更漂亮的界面。www.chinaEDA.cn1、嵌

入式图形系统简介1.3常用的几种嵌入式GUI工具包1.紧缩的XWindow系统2.MicroWindows3.MiniGUI4.OpenGUI5.Qt/Embeddedwww.chinaEDA.cn1.3.1TinyXT

inyX,是标准X-Windows在嵌入式系统的小巧实现,作为一个图形环境,X-Windows是成功的,但由于在体系接口上的原因,限制了它对游戏、多媒体的支持能力。www.chinaEDA.cn1.3.2MicrowindowsMirowindows是嵌入式系统中

广为使用的一种图形用户接口,其官方网站是:microwindows.org。这个项目的早期目标是在嵌入式Linux平台上提供和普通个人电脑上类似的图形用户界面。MicroWindows,其主要特色在于提供了C/S体系结构,同时也提供了相对完善的图形功能。但却无任何硬件加速能力,图形引擎中也存在着许

多未经优化的低效算法。www.chinaEDA.cn1.3.2MicrowindowsMicrowindows的核心基于显示设备接口,因此可移植行很好,microwindows有自己的Framebuffer,因此它并不局限于Linux开发平台,在eCos、

FreeBSD、RTEMS等操作系统上都能很好地运行。此外,Microwindows能在宿主机上仿真目标机。这意味着基于Linux的Microwindows应用程序的开发和调试可以在普通的个人电脑上进行,而不需要使用普通嵌入式软件的“宿主机-目标机”调试模

式,从而大大加快了开发速度。Mincrowindows是完全免费的一个用户图形系统。www.chinaEDA.cn1.3.3MiniGUIMiniGUI是由北京飞漫软件技术有限公司主持的一个自由软件项目(

遵循GPL条款),其目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统。MiniGUI为应用程序定义了一组轻量级的窗口和图形设备接口。利用这些接口,每个应用程序可以建立多个窗口,而且可以在这些窗口中绘制图形

。用户也可以利用MiniGUI建立菜单、按钮、列表框等常见的GUI元素。www.chinaEDA.cn1.3.3MiniGUI用户可以将MiniGUI配置成“MiniGUI-Threads”或者“MiniGUI-Lite。运行在MiniGUI-Threads上的程序可以在不同的线程中建立多个窗

口,但所有的窗口在一个进程中运行。相反,运行在MiniGUI-Lite上的每个程序是单独的进程,每个进程也可以建立多个窗口。www.chinaEDA.cn1.3.4OpenGUIOpenGUI基于一个用汇编实现的x86图形内核,提供了一个高层的C/C++图形/窗口接口,它

的资源消耗小,可移植性差,不支持多进程。www.chinaEDA.cn2,QT/EQt/Embedded(简称QtE)是一个专门为嵌入式系统设计图形用户界面的工具包。Qt是挪威Trolltech软件公司的产品,它为各种系统提供图形用户界面的工具包,QtE就是

Qt的嵌入式版本。www.chinaEDA.cn2,QT/E注意:QT与QT/Embedded的区别www.chinaEDA.cn2,QT/Ewww.chinaEDA.cn2.1QT/E特点2.1.1跨平台可支持的平台包括:◆MS/W

indows95、Windows98、WindowsNT4.0、Windows2000、WindowsXP;◆Unix/X11Linux、SunSolaris、HP-UX、CompaqTrue64Unix、IBMAIX、SGIIRIX和很多其它X11平

台;◆MacintoshiMacOSX;◆嵌入式的,包含有FramBuffer的Linux平台。www.chinaEDA.cn2.1QT/E特点2.2.2资源丰富trolltech的主页:trolltech/支持匿名访问的FTP:ftp://ftp.trolltech

新闻组服务器:nntp.trolltech非官方的Qt文档中文翻译小组:qiliang/qt/index.htmlwww.chinaEDA.cn2.1QT/E特点2.2.3工具丰富提供了构建(qmak

e)、可视化设计(uic和qdesigner)、国际化(linguist)、文档系统(assistant)等一系列非常好用的工具。尤其是文档系统,绝对可以称得上是出色。www.chinaEDA.cn2.1

QT/E特点2.2.4丰富的API函数Qt/Embedded也可以看成是一组用于访问嵌入式设备的QtC++API;Qt/Embedded的Qt/X11,Qt/Windows和Qt/Mac版本提供的都是相同的API和工具。www.chinaEDA

.cn2.1QT/E特点2.2.5运行需要资源少、功能强大相对X窗口下的嵌入解决方案而言,Qt/Embedded只要求一个较小的存储空间(Flash)和内存。Qt/Embedded可以运行在不同的处理器上部署的Linux系

统,只要这个系统有一个线性地址的缓冲帧并支持C++的编译器。www.chinaEDA.cn2.1QT/E特点2.2.6功能可裁减Qt/Embedded提供了大约200个可配置的特征,www.chinaEDA.cn3,QTOPIA3.1简介Qtopia是基于Qt编写的一个用于手持设备的用

户信息管理软件,它集成了很多实用的程序。市面上买到的预装linux操作系统的arm9开发版,开机后看到的图形界面多是qtopia。www.chinaEDA.cn3,QTOPIA3.1简介www.chinaEDA.cn3,QTOPIA3.2QTE和Qtopia开发模型

LinuxKernelFrame-bufferQT/EmbeddedQT/X11XlibXWindowServerQTAPIQTOPIAorOtherApplicationwww.chinaEDA.cn课堂回顾1,什么是frameBuffer?2,QT与QT/E最大的不同?3,QTOP

IA与QT的关系?4,众多嵌入式图形开发库中,为什么大多数人选择QT/E?www.chinaEDA.cn4,QTE开发环境搭建工具软件描述变量声明Tmake-1.11生成Makefile文件TMAKEDIR

/TMAKEPATH/PATHQt-x11-2.3.2Qvfb-虚拟帧缓存工具Uic-用户界面编辑器DesignerQt图形设计器LD_LIBRARY_PATH_/PATHQt-embedded-2.3.7

Qt库支持libqte.soQTEDIR/LD_LIBRARY_PATH/PATHQtopia-free-1.7.0应用程序开发包桌面环境QPEDIR/LD_LIBRARY_PATH/PATH宿主机移植所需工具及环境变量声明:www.c

hinaEDA.cn4,QTE开发环境搭建4.1tmake安装tarxfvztmake-1.11.tar.gzmvtmake-1.11tmakeexportTMAKEDIR=$PWD/tmakeexport

TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++www.chinaEDA.cn4,QTE开发环境搭建4.2QT编译tarxfvzqt-x11-2.3.2.tar.gzmvqt-2.3.2qt-x11cdqt-x11exportQ

TDIR=$PWDechoyes|./configure-static-no-xft-no-opengl-no-sm-threadmake-Csrc/moccpsrc/moc/mocbinmake-Csrcmake-Ctools/designermake-Ctools

/qvfbcptools/qvfb/qvfbbinstripbin/uicbin/mocbin/designerbin/qvfbwww.chinaEDA.cn4,QTE开发环境搭建4.3QTE编译tar

xfvzqt-embedded-2.3.7.tar.gzmvqt-2.3.7/qtcpqt-x11/bin/?*qt/binexportQTDIR=$PWD/qtexportQPEDIR=$PWD/qtopiaexpor

tTMAKEDIR=$PWD/tmakeexportTMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++exportPATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATHcdqtmakecleancp../q

topia/src/qt/qconfig-qpe.hsrc/tools/(echoyes;echoyes)|./configure-platformlinux-generic-g++-thread-qconfigqpe-de

pths16,24,32make-Csrcwww.chinaEDA.cn4,QTE开发环境搭建4.4QPE编译tarxfvzqtopia-free-1.7.0.tar.gzmvqtopia-free-1.7.0qtopiacdqtopia/src./configure-

platformlinux-generic-g++make需要上一页其他的环境变量www.chinaEDA.cn4,QTE开发环境搭建4.5运行www.chinaEDA.cn当在PC上模拟Qtopia的运行时,需要用

到对应Qt版本的库文件,因此需要修改/etc/ld.so.conf文件以适应刚刚安装的Qt(Redhat安装时带有Qt库,但不适合我们最新安装的版本),修改后的ld.so.conf文件内容如下:/sbc2410/x86-qtopia/qt/lib/

sbc2410/x86-qtopia/qtopia/lib/usr/kerberos/lib/usr/X11R6/lib/usr/lib/sane修改完此文档后,为了让刚刚安装的库生效,必须运行ldconfig。至此Qt的开发缓建已经建立。www.chinaEDA.cn(1)

设置环境变量exportQTDIR=$PWD/qtexportQPEDIR=$PWD/qtopiaexportTMAKEDIR=$PWD/tmakeexportTMAKEPATH=$TMAKEDIR/lib/qws/linux-g

eneric-g++exportPATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATHexportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_

PATH(2)启动虚拟帧缓存“$qvfb&”或“$qvfb-width640–height480&”(3)运行qtopiaqpe&www.chinaEDA.cn5,QTE开发关键技术5.1信号与插槽信号和槽用于

对象间的通讯。信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分。www.chinaEDA.cn信号与插槽回调技术特点:他们不是类型安全的其次回调和处理函数是非常强有力地联系在一起的www.chinaEDA.cn信号与插

槽信号与插槽机制特点:类型安全信号和槽是宽松地联系在一起的速度慢www.chinaEDA.cn信号与插槽www.chinaEDA.cn信号与插槽www.chinaEDA.cn信号与插槽一个最小的C++类声明如下:cla

ssFoo{public:Foo();intvalue()const{returnval;}voidsetValue(int);private:intval;};www.chinaEDA.cn信号与插槽一个小的Qt类如下:class

Foo:publicQObject{Q_OBJECTpublic:Foo();intvalue()const{returnval;}publicslots:voidsetValue(int);signals:voidvalueChanged(int);private:intval;};www

.chinaEDA.cn信号与插槽槽可以由应用程序的编写者来实现。这里是Foo::setValue()的一个可能的实现:voidFoo::setValue(intv){if(v!=val){val=v;emitvalu

eChanged(v);}}www.chinaEDA.cn信号与插槽把两个对象连接在一起的一种方法:Fooa,b;connect(&a,SIGNAL(valueChanged(int)),&b,SLOT(setValue(i

nt)));a.setValue(79);//a==79b==79b.setValue(11);//a==undefinedb==11b.value();www.chinaEDA.cn信号与插槽5.2元对象编译器(MOC)作用M

OC是用来专门处理QT对C++的扩展部分用法www.chinaEDA.cn6,实例一一、代码编辑二、程序编译www.chinaEDA.cn#include<qapplication.h>#include<qpushbutton.h>intmain(inta

rgc,char**argv){QApplicationa(argc,argv);QPushButtonhellobtn("Helloworld!",0);hellobtn.resize(100,20);a.setMainWi

dget(&hellobtn);hellobtn.show();returna.exec();}www.chinaEDA.cn#include<qapplication.h>#include<qpushbutton.h>intmain(intargc,char**ar

gv){QApplicationa(argc,argv);QPushButtonhellobtn("Helloworld!",0);hellobtn.resize(100,20);a.setMainWidget(&hellobtn);hellobtn.show();retu

rna.exec();}www.chinaEDA.cn#include<qapplication.h>#include<qpushbutton.h>intmain(intargc,char**argv)

{QApplicationa(argc,argv);QPushButtonhellobtn("Helloworld!",0);hellobtn.resize(100,20);a.setMainWidget(&hellobtn);hellobtn.s

how();returna.exec();}www.chinaEDA.cn#include<qapplication.h>#include<qpushbutton.h>intmain(intargc,ch

ar**argv){QApplicationa(argc,argv);QPushButtonhellobtn("Helloworld!",0);hellobtn.resize(100,20);a.setMainWidget(&hellobtn);hellobtn.sho

w();returna.exec();}www.chinaEDA.cn#include<qapplication.h>#include<qpushbutton.h>intmain(intargc,char**argv){QAppli

cationa(argc,argv);QPushButtonhellobtn("Helloworld!",0);hellobtn.resize(100,20);a.setMainWidget(&hellobtn);hellobtn.show();returna.exec();}www

.chinaEDA.cn#include<qapplication.h>#include<qpushbutton.h>intmain(intargc,char**argv){QApplicationa(argc,argv);QPushButto

nhellobtn("Helloworld!",0);hellobtn.resize(100,20);a.setMainWidget(&hellobtn);hellobtn.show();returna.exec();}www.chinaE

DA.cn#include<qapplication.h>#include<qpushbutton.h>intmain(intargc,char**argv){QApplicationa(argc,argv);

QPushButtonhellobtn("Helloworld!",0);hellobtn.resize(100,20);a.setMainWidget(&hellobtn);hellobtn.show();returna.exec();}www.chinaEDA.cn#include<qappl

ication.h>#include<qpushbutton.h>intmain(intargc,char**argv){QApplicationa(argc,argv);QPushButtonhellobtn("Helloworld!",0);hellobtn.resize(10

0,20);a.setMainWidget(&hellobtn);hellobtn.show();returna.exec();}www.chinaEDA.cn#include<qapplication.h>#include<q

pushbutton.h>intmain(intargc,char**argv){QApplicationa(argc,argv);QPushButtonhellobtn("Helloworld!",0);hellobtn.resize(100,20);

a.setMainWidget(&hellobtn);hellobtn.show();returna.exec();}www.chinaEDA.cn6,实例一二、程序编译1,生成工程文件Progen-otest.pro2,生成MakefileTmake-oMakefiletest.p

ro3,编译makewww.chinaEDA.cn6,实例二一、工程创建二、界面设计三、代码编辑四、程序编译www.chinaEDA.cn6,实例三(信号与槽)一、工程创建二、界面设计三、代码编辑四、程序编译www.chinaEDA.cn课堂回顾1、怎样将信号连接到槽?2、能否将多个

槽连接到一个信号?3、是否能将一个信号连接到其他信号?如果能,应该怎样操作?4、如果编译器报告connect的参数错误,通常会是什么错误?www.chinaEDA.cn7,QT编程模式讨论基本模式子

类继承模式ui.h模式www.chinaEDA.cn基本模式www.chinaEDA.cn子类继承模式www.chinaEDA.cn子类继承模式子类继承模式缺点:初学者接受困难多写了很多代码,增加了出错的几率类几乎翻番的增加,严重影响了编译速度和代码

大小。www.chinaEDA.cnui.h模式www.chinaEDA.cn8,向QPE中添加自己的程序Qtopia是基于Qt的一个桌面程序,往其中安装应用程序需要一个桌面文件,图标文件以及相应的可执行文件。www.chinaEDA.cn8,向QPE中添加自己的程序

Qpe目录介绍步骤www.chinaEDA.cn9,Qt/Embedded开发模型嵌入式软件开发通常都采用交叉编译的方式进行,基于Qt/Embedded和Qtopia的GUI应用开发也采用这样的模式。先在宿主机上调试应用程序,调

试通过后,经过交叉编译移植到目标板上。Qt/Embedded直接写入帧缓存,在宿主机上则是通过qvfb(virtualframebuffer)来模拟帧缓存。qvfb是X窗口用来运行和测试Qtopia应

用程序的系统程序。qvfb使用了共享内存存储区域(虚拟的帧缓存)来模拟帧缓存并且在一个窗口中模拟一个应用程序来显示帧缓存,显示的区域被周期性的改变和更新。www.chinaEDA.cn9,Qt/Embedded开发模型交叉编译:exportQTDIR=$PWD/qtexp

ortQPEDIR=$PWD/qtopiaexportTMAKEDIR=$PWD/tmakeexportTMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++exportPATH=$QTDIR

/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATHcdqtmakecleancp../qtopia/src/qt/qconfig-qpe.hsrc/tools/(echoyes;echono)|./configure-platformlinux-arm-g++

-qconfigqpe-depths16,24,32make-Csrccd..cdqtopia/src./configure-platformlinux-arm-g++makewww.chinaEDA.cn

课堂回顾形成对QTE开发的自己的理解。如果编译中显示缺少uuid库怎么办?编译时显示无法识别cos,sin等函数如何解决?如果使用QTDesigner设计界面后,用uic工具生成cpp文件时为空是怎么回事?

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?