好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

嵌入式QT编程教学课堂.ppt

42页
  • 卖家[上传人]:新**
  • 文档编号:579206822
  • 上传时间:2024-08-26
  • 文档格式:PPT
  • 文档大小:980.50KB
  • / 42 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1QT QT 编程编程1专业课件 2博创科技博创科技 嵌入互动嵌入互动内容摘要嵌入式GUI简述QT 程序设计概述基于Qt Designer 的编程方法移植Qt/Embedded环境2专业课件 3博创科技博创科技 嵌入互动嵌入互动嵌入式GUI简介 GTK(C)QT(C++)GNOMEGPEKDEOPIE/Qtopia主流的Linux窗口系统PC嵌入式嵌入式GUI简述3专业课件 4博创科技博创科技 嵌入互动嵌入互动MicrowindowslMirowindows是嵌入式系统中广为使用的一种图形用户接口,其官方网站是:http://www.microwindows.org这个项目的早期目标是在嵌入式Linux平台上提供和普通个人电脑上类似的图形用户界面l作为PC上X-Windows的替代品,Microwindows提供了和X-Windows类似的功能,但是占用的内存要少得多,根据用户得配置,Microwindows占用得内存资源在100KB-60KB嵌入式GUI简述4专业课件 5博创科技博创科技 嵌入互动嵌入互动Microwindowsl此外,Microwindows能在宿主机上仿真目标机。

      这意味着基于Linux的Microwindows应用程序的开发和调试可以在普通的个人电脑上进行,而不需要使用普通嵌入式软件的“宿主机-目标机”调试模式,从而大大加快了开发速度lMicrowindows的核心基于显示设备接口,因此可移植行很好,microwindows有自己的Framebuffer,因此它并不局限于Linux开发平台,在eCos、FreeBSD、RTEMS等操作系统上都能很好地运行 lMincrowindows是完全免费的一个用户图形系统 嵌入式GUI简述5专业课件 6博创科技博创科技 嵌入互动嵌入互动MiniGUI lMiniGUI是由北京飞漫软件技术有限公司主持的一个自由软件项目(遵循GPL条款),其目标是为基于实时嵌入式系统提供一个轻量级的图形用户界面支持系统 lMiniGUI为应用程序定义了一组轻量级的窗口和图形设备接口利用这些接口,每个应用程序可以建立多个窗口,而且可以在这些窗口中绘制图形用户也可以利用MiniGUI建立菜单、按钮、列表框等常见的GUI元素嵌入式GUI简述6专业课件 7博创科技博创科技 嵌入互动嵌入互动QtlQt是Trolltech公司的标志性产品,是一个跨平台的C++图形用户界面(GUI)工具包。

      现已被诺基亚收购,由诺基亚的专门部门进行技术支持和维护lQt 应用程序接口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置 lQt/Windows  (Windows XP, 2000, NT 4, Me/98) lQt/Mac  (Mac OS X)  lQt/X11  (Linux, Solaris, HP-UX, IRIX, AIX等) lQt对不同平台的专门API进行了专门的封装(文件处理,网络等) 嵌入式GUI简述7专业课件 8博创科技博创科技 嵌入互动嵌入互动Qt特征l引入一种用于无缝对象通讯的被称为信号和槽的非常强大的机制 l可查询和可设计的属性, l强大的事件和事件过滤器, l根据上下文进行国际化的字符串翻译, l完善的时间间隔驱动的计时器使得在一个事件驱动的图形界面程序中很好地集成许多任务成为可能 l以一种自然的方式组织对象所有权的分层次和可查询的对象树 l被守护的指针,QGuardedPtr,当参考对象被破坏时,可以自动地设置为无效,不像正常的C++指针在它们的对象被破坏的时候变成了“摇摆指针” 嵌入式GUI简述8专业课件 9博创科技博创科技 嵌入互动嵌入互动Qt/EmbeddedlQt/Embedded(简称QtE)是一个专门为嵌入式系统设计图形用户界面的工具包。

      l嵌入式系统地要求是小而快速,而QtE就能帮助开发者为满足这些要求开发强壮地应用程序lQtE是模块化和可裁剪地开发者可以选取他所需要的一些特性,而裁剪掉所不需要的这样,通过选择所需要的特性,QtE的映像变得很小,最小只有600K左右l用QtE开发的应用程序要移植到不同平台时,只需要重新编译代码,而不需要对代码进行修改嵌入式GUI简述9专业课件 10博创科技博创科技 嵌入互动嵌入互动l与硬件平台无关:QtE可以应用在所有主流平台和CPU上支持所有主流的嵌入式Linux,对于在Linux上的QtE的基本要求只不过是Frame Buffer设备和一个C++编译器(如gcc)Qte同时也支持很多实时的嵌入式系统,如QNX和WindowsCE l提供压缩字体格式:即使在很小的内存中,也可以提供一流的字体支持l支持多种的硬件和软件的输入l支持Unicode,可以轻松地使程序支持多种语言l支持反锯齿文本和Alpha混合的图片QtE 特征嵌入式GUI简述10专业课件 11博创科技博创科技 嵌入互动嵌入互动lQtE虽然公开代码和技术文档,但是它不是免费的,当开发者的商业化产品需要用到他的运行库时,必须向诺基亚公司支持license费用,如果开发的东西不用  于商业用途则不需要付费。

      lQtE由于平台无关性和提供了很好的Gui编程接口,在许多嵌入式系统中得到了广泛的应用,是一个成功的嵌入式GUI产品QtE 特征特征嵌入式GUI简述11专业课件 12博创科技博创科技 嵌入互动嵌入互动QtopialTrolltech公司在QtE的基础上开发了一个应用的环境—Qtopia,这个应用环境为移动和手持设备开发其特点就是拥有完全的、美观的GUI,同时它也提供可上百个应用程序用于管理用户信息、办公、娱乐、Internet交流等l已经有很多公司采用了Qtopia来开发他们主流的PDA嵌入式GUI简述12专业课件 13博创科技博创科技 嵌入互动嵌入互动lQtopia是一种全方位的应用开发平台,它可用于基于嵌入式linux的PDA,移动,web pads,以及其他移动计算设备lQtopia构建于Qt/Embedded之上,是专为基于linux的消费电子产品提供和创建图形用户界面而设计的常见的有两种版本:1.Qtopia Phone版:专为基于linux的智能和多功能设计2.Qtopia PDA版:专为基于linux的PDA设计嵌入式GUI简述13专业课件 14博创科技博创科技 嵌入互动嵌入互动lQtopia特色:l视窗操作系统;同步窗口;开发环境;本地化支持;游戏和多媒体;PIM应用程序;输入法;个性化选项;internet应用程序;java集成;无线支持;嵌入式GUI简述14专业课件 15博创科技博创科技 嵌入互动嵌入互动Qt编程核心技术编程核心技术1.QT对象模型u元对象系统u信号和插槽u属性2.QObject类u对象树u事件处理QT 程序设计概述15专业课件 16博创科技博创科技 嵌入互动嵌入互动元对象系统l是一个C++扩展,使得QT更适合真正的组件GUI编程l使用元编译器moc产生能被标准C++编译器访问的附加C++代码l带有moc预编译器的C++基本上提供了面向对象的灵活性,并保持了C++的执行效率和扩展性QT 程序设计概述16专业课件 17博创科技博创科技 嵌入互动嵌入互动信号和插槽l在Qt程序中,利用信号(signal)和插槽(slot)机制进行对象间的通信l事件处理的方式也是回调l当对象状态发生改变的时候,发出signal通知所有的slot接收signal,尽管它并不知道哪些函数定义了slot,而slot也同样不知道要接收怎样的signallsignal和slot机制真正实现了封装的概念,slot除了接收signal之外和其它的成员函数没有什么不同,而且signal和slot之间也不是一一对应的。

      QT 程序设计概述17专业课件 18博创科技博创科技 嵌入互动嵌入互动Signal和Slot的声明(1/2)l在Qt程序设计中,凡是包含signal和slot的类中都要加上Q_OBJECT的定义class Student : public QObject{ Q_OBJECT public: Student() { myMark = 0; } int mark() const { return myMark; } public slots: void setMark(int newMark); signals: void markChanged(int newMark); private: int myMark;};QT 程序设计概述18专业课件 19博创科技博创科技 嵌入互动嵌入互动Signal和Slot的声明(2/2)lsignal的发出一般在事件的处理函数中,利用emit发出signal,在下面的例子中在在事件处理结束后发出signalvoid Student::setMark(int newMark){ if (newMark!= myMark) { myMark = newMark; emit markChanged(myMark); }}QT 程序设计概述19专业课件 20博创科技博创科技 嵌入互动嵌入互动Signal和Slot的连接(1/2)l在signal和slot声明以后,需要使用connect()函数将它们连接起来。

      lconnect()函数属于QObject类的成员函数,它能够连接signal和slot,也可以用来连接signal和signal,函数原形如下: bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member ) [static] 其中第一个和第三个参数分别指出signal和slot是属于那个对象或组件QT 程序设计概述20专业课件 21博创科技博创科技 嵌入互动嵌入互动Signal和Slot的连接(2/2)l在使用connect()函数进行来接的时候,还需要用到SIGNAL()和SLOT()这两个宏,使用方法如下:QLabel *label = new QLabel; QScrollBar *scroll = new QScrollBar;QObject::connect( scroll,SIGNAL(valueChanged(int)), label, SLOT(setNum(int)) ); QT 程序设计概述21专业课件 22博创科技博创科技 嵌入互动嵌入互动Signal和Slot的连接方式QT 程序设计概述22专业课件 23博创科技博创科技 嵌入互动嵌入互动取消Signal和Slot连接l取消一个连接disconnect(lcd,SIGNAL(overflow()),this,SLOT(handleMathError()));l取消一个连接不是很常用,因为Qt会在一个对象被删除后自动取消这个对象所包含的所有的连接QT 程序设计概述23专业课件 24博创科技博创科技 嵌入互动嵌入互动属性l属性也是一个类的成员l在类声明中用宏Q_PROPERTY来声明l只能在继承于QObject的子类中声明l设置和得到属性的成员函数如下:lQObject::setProperty()lQMetaObject::propertyNames()lQMetaObject::property ()QT 程序设计概述24专业课件 25博创科技博创科技 嵌入互动嵌入互动QObject类lQObject是Qt类体系的唯一基类,是Qt各种功能的源头活水,就象MFC中的CObject和Dephi中的TObjectl对象树:QObject在对象树中组织它们自己。

      当你以另外一个对象作为父对象来创建一个QObject时,它就被添加到父对象的children() 列表中,并且当父对象被删除的时候,它也会被删除这种机制很好的适合了图形用户界面应用对象的需要 l事件:事件是由窗口系统或qt本身对各种事务的反应而产生的当用户按下、释放一个键或鼠标按钮,一个键盘或鼠标事件被产生;当窗口第一次显示,一个绘图事件产生,从而告知最新的可见窗口需要重绘自身大多数事件是由于响应用户的动作而产生的,但还有一些,比如定时器等,是由系统独立产生的 QT 程序设计概述25专业课件 26博创科技博创科技 嵌入互动嵌入互动事件运行机制QApplication::exec()QApplication::enter_loop()QApplication::processNextEvent()QApplication:: sendPostedEvents();QWSDisplay::getEvent()QApplication::qwsProcessEvent() QWSServer::processEventQueue()事件循环QT 程序设计概述26专业课件 27博创科技博创科技 嵌入互动嵌入互动QApplicationlQApplication和QWidget都是QObject类的子类lQApplication类负责GUI应用程序的控制流和主要的设置,它包括主事件循环体,负责处理和调度所有来自窗口系统和其他资源的事件,并且处理应用程序的开始、结束以及会话管理,还包括系统和应用程序方面的设置。

      对于一个应用程序来说,建立此类的对象是必不可少的QT 程序设计概述27专业课件 28博创科技博创科技 嵌入互动嵌入互动QWidgetlQWidget类是所有用户接口对象的基类,它继承了QObject类的属性组件是用户界面的单元组成部分,它接收鼠标、键盘和其它从窗口系统来的事件,并把它自己绘制在盘屏幕上lQWidget类有很多成员函数,但一般不直接使用,而是通过子类继承来使用其函数功能如,QPushButton、QlistBox等都是它的子类QT 程序设计概述28专业课件 29博创科技博创科技 嵌入互动嵌入互动一个完整的Qt程序1 #include 2 #include 3 int main (int argc, char *argv [])4 {5 QApplication app (argc, argv);6 QLabel *label = new QLabel ("Hello Qt!");7 label->show ();8 return app. exec ();9 }QT 程序设计概述29专业课件 30博创科技博创科技 嵌入互动嵌入互动Qt Designerl直接使用代码来直接编写GUI无疑是非常痛苦的,好在QT提供了界面开发工具:QTdesigner lQt应用程序除了使用手工编写代码的方式外,还可以用过Qt Desinger来完成lQt Designer的功能十分强大,界面类似于VB,而且还提供了大量可供编程使用的组件基于Qt Designer的程序设计30专业课件 31博创科技博创科技 嵌入互动嵌入互动基于Qt Designer的程序设计31专业课件 32博创科技博创科技 嵌入互动嵌入互动基于Qt Designer程序设计(1/4)l在使用Qt Designer程序开发时,一般要涉及到下面几个步骤:l1.创建和初始化子部件l2.设置子部件布局l3.设置Tab键次序(不是必须)l4.建立信号与插槽的连接l5.编写事件处理函数基于Qt Designer的程序设计32专业课件 33博创科技博创科技 嵌入互动嵌入互动基于Qt Designer程序设计(2/4)1.创建并布置部件2.对部件使用布局管理3.建立信号与插槽的连接基于Qt Designer的程序设计33专业课件 34博创科技博创科技 嵌入互动嵌入互动基于Qt Designer程序设计(3/4)      编辑两个部件之间信号与插槽之间的连接方式基于Qt Designer的程序设计34专业课件 35博创科技博创科技 嵌入互动嵌入互动基于Qt Designer程序设计(4/4)Qt Designer下不同风格的预览基于Qt Designer的程序设计35专业课件 36博创科技博创科技 嵌入互动嵌入互动Qt Designer的工作过程lQt Designer将工程文件组织成.ui的文件l由.ui文件生成 .h文件l.ui -----xmllUIC -o form.h form.ui l需要注意的是,在QT3中使用例如UIC -o form.cpp -i form.h form.ui这样的方式来生成表单的CPP文件,但在QT4中,UIC已经作了修改,不能输出表单的CPP文件l由C++编译器编译所有.h和.cpp文件基于Qt Designer的程序设计36专业课件 37博创科技博创科技 嵌入互动嵌入互动Qt Designer 功能框图基于Qt Designer的程序设计37专业课件 38博创科技博创科技 嵌入互动嵌入互动Qt程序开发过程1.使用designeru设计界面,添加窗口组件u建立信号槽连接u编写事件处理函数u保存工程为.ui文件,得到一个主窗口类2. 编写main.cpp文件进行主窗口类的实例化及显示 3. 设置编译所需的环境变量lQTDIR =   基于Qt Designer的程序设计38专业课件 39博创科技博创科技 嵌入互动嵌入互动Qt程序开发过程     4.使用qmake生成.pro工程文件[root@Intel qt4]qmake -project 5.通过qmake自动生成Makefile文件 [root@Intel qt4]qmake6. make生成可执行文件7.运行基于Qt Designer的程序设计39专业课件 40博创科技博创科技 嵌入互动嵌入互动一般步骤一般步骤l建立Qt/Embedded开发环境1、下载安装QT for embedded源代码# tar xvjf qt-embedded-linux-opensource-src-4.4.0.tar.bz2l2、配置裁剪、配置裁剪Qt/E库源码库源码# cd qt-embedded-linux-opensource-src-4.4.0#./configure -embedded arm -xplatform qws/linux-arm-g++configure文件为文件为QT库环境配置文件,可以用库环境配置文件,可以用./configure –help查看查看l3、编译、安装、编译、安装Qt/E库环境库环境# make# make install4、编写并编译、编写并编译QT界面程序界面程序l5、拷贝、拷贝(NFS挂载挂载)Qt/E库、库、Qt/E程序至程序至ARM端,设置端,设置Qt/E环境变量,执行程序。

      环境变量,执行程序 移植Qt/Embedded 环境40专业课件 41博创科技博创科技 嵌入互动嵌入互动运行程序设置环境变量lexport QTDIR=$PWDlexport LD_LIBRARY_PATH=$PWD/lib$PWD当前工作路径环境变量根据具体路径而设定运行QT/E程序l./helloword  -qws移植Qt/Embedded 环境41专业课件 42博创科技博创科技 嵌入互动嵌入互动42专业课件 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.