资源预览内容
第1页 / 共67页
第2页 / 共67页
第3页 / 共67页
第4页 / 共67页
第5页 / 共67页
第6页 / 共67页
第7页 / 共67页
第8页 / 共67页
第9页 / 共67页
第10页 / 共67页
亲,该文档总共67页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
嵌入式第八章嵌入式第八章8.1嵌入式图形系统简介嵌入式图形系统简介8.1.1GUI的概念的概念8.1.2Linux图形系统的发展史图形系统的发展史8.1.3嵌入式嵌入式GUI8.1.4常用的几种嵌入式常用的几种嵌入式GUI8.1.3嵌入式嵌入式GUI早期嵌入式系统功能简单,对图形用户界面需求早期嵌入式系统功能简单,对图形用户界面需求并不是太大。而且当时的图形系统对硬件要求太并不是太大。而且当时的图形系统对硬件要求太高,在嵌入式上实现几乎没有可能。高,在嵌入式上实现几乎没有可能。软硬件技术的进步使得嵌入式系统下的图形开发软硬件技术的进步使得嵌入式系统下的图形开发成为可能,嵌入式成为可能,嵌入式GUI(嵌入式系统使用的嵌入式系统使用的GUI)使使我们能更容易易地编写出更好、更漂亮的界面。我们能更容易易地编写出更好、更漂亮的界面。嵌入式嵌入式GUI具有一些与一般具有一些与一般GUI不同的特点:不同的特点:占用的存储空间以及运行时占用资源少,这一点占用的存储空间以及运行时占用资源少,这一点决定它和决定它和Windows不同,也和不同,也和PC上运行的大型上运行的大型GUI不同不同运行速度及响应速度快,能适应嵌入式系统的实运行速度及响应速度快,能适应嵌入式系统的实时性要求时性要求可靠性高,这和嵌入式的应用领域相关,比如军可靠性高,这和嵌入式的应用领域相关,比如军事、航天和工业控制领域。事、航天和工业控制领域。便于移植和定制,嵌入式系统本身就是一种个性便于移植和定制,嵌入式系统本身就是一种个性化设备,对化设备,对GUI的需求各不相同,所以它使用的的需求各不相同,所以它使用的GUI也必须是可定制的。也必须是可定制的。8.1.4常用的几种嵌入式常用的几种嵌入式GUI一个一个简单的的GUIcGUI嵌入式嵌入式linux(支持支持XWindows)下的下的GUI:TinyXMicroWindowsOpenGUIMiniGUIQt一个一个简单的的GUI-cGUIUCGUI严格说并不能算严格说并不能算GUI,只是一种嵌入式应,只是一种嵌入式应用中的图形支持系统,它独立于处理器及用中的图形支持系统,它独立于处理器及LCD控控制器,可适用单任务或是多任务系统环境。制器,可适用单任务或是多任务系统环境。它的设计架构是模块化的,由一个它的设计架构是模块化的,由一个LCD驱动层来驱动层来包含所有对包含所有对LCD的具体图形操作,可以在任何的具体图形操作,可以在任何CPU上运行上运行,是是100%的标准的标准C代码编写的。代码编写的。能够适应大多数的使用黑白或彩色能够适应大多数的使用黑白或彩色LCD的应用的应用,带带有允许处理灰度的颜色管理,提供一个可扩展的有允许处理灰度的颜色管理,提供一个可扩展的2D图形库及占用极少图形库及占用极少RAM的窗口管理体系的窗口管理体系.UCGUI一般用于基于嵌入式操作一般用于基于嵌入式操作UCOS的应用,的应用,它功能比较简单,不太适合高级的它功能比较简单,不太适合高级的GUI应用,一应用,一般也不用于般也不用于Linux。TinyXTinyX,是标准,是标准X-Windows在嵌入式系统的小巧在嵌入式系统的小巧实现,作为一个图形环境,实现,作为一个图形环境,X-Windows是成功的,是成功的,但由于在体系接口上的原因,限制了它对游戏、但由于在体系接口上的原因,限制了它对游戏、多媒体的支持能力。多媒体的支持能力。MicrowindowsMicrowindows是嵌入式系统中广为使用的一种是嵌入式系统中广为使用的一种图形用户接口,其官方网站是:图形用户接口,其官方网站是:http:/www.microwindows.org。这个项目的早期目标是在嵌入式这个项目的早期目标是在嵌入式Linux平台上提供平台上提供和普通个人电脑上类似的图形用户界面。和普通个人电脑上类似的图形用户界面。其主要特色在于提供了其主要特色在于提供了/体系结构,同时也提体系结构,同时也提供了相对完善的图形功能。但却无任何硬件加速供了相对完善的图形功能。但却无任何硬件加速能力,图形引擎中也存在着许多未经优化的低效能力,图形引擎中也存在着许多未经优化的低效算法。算法。Microwindows的核心基于显示设备接口,因此的核心基于显示设备接口,因此可移植行很好,可移植行很好,microwindows有自己的有自己的Framebuffer,因此它并不局限于,因此它并不局限于Linux开发平台,开发平台,在在eCos、FreeBSD、RTEMS等操作系统上都能等操作系统上都能很好地运行。很好地运行。此外,此外,Microwindows能在宿主机上仿真目标机。能在宿主机上仿真目标机。这意味着基于这意味着基于Linux的的Microwindows应用程序的应用程序的开发和调试可以在普通的个人电脑上进行,而不开发和调试可以在普通的个人电脑上进行,而不需要使用普通嵌入式软件的需要使用普通嵌入式软件的“宿主机目标机宿主机目标机”调调试模式,从而大大加快了开发速度。试模式,从而大大加快了开发速度。Mincrowindows是完全免费的一个用户图形系统是完全免费的一个用户图形系统OpenGUIOpenGUI基于一个用汇编实现的基于一个用汇编实现的x86图形内核,图形内核,提供了一个高层的提供了一个高层的C/C+图形图形/窗口接口,它的资窗口接口,它的资源消耗小,可移植性差,不支持多进程。源消耗小,可移植性差,不支持多进程。OpenGUI提供了二维绘图函数原型、消息驱动的提供了二维绘图函数原型、消息驱动的API及及BMP文件格式支持。文件格式支持。OpenGUI功能强大,使用方便,支持鼠标和键盘功能强大,使用方便,支持鼠标和键盘事件,基于事件,基于Framebuffer实现绘图。实现绘图。MiniGUIMiniGUI是由北京飞漫软件技术有限公司主持的是由北京飞漫软件技术有限公司主持的一个自由软件项目一个自由软件项目(遵循遵循GPL条款条款)。MiniGUI最初是为了满足一个工业控制系统(计最初是为了满足一个工业控制系统(计算机数控系统)的需求而设计和开发的。这个工算机数控系统)的需求而设计和开发的。这个工业控制系统是清华大学为一台数控机床设计的计业控制系统是清华大学为一台数控机床设计的计算机数控系统(算机数控系统(CNC)。)。该项目组选择该项目组选择RT-Linux作为实时操作系统,以作为实时操作系统,以便满足便满足2ms甚至更高的实时性,是为解决图形用甚至更高的实时性,是为解决图形用户界面问题开发一套图形用户界面支持系统。户界面问题开发一套图形用户界面支持系统。MiniGUI一开始就是针对实时系统设计的,在设一开始就是针对实时系统设计的,在设计之初就考虑到了小巧、高性能和高效率。计之初就考虑到了小巧、高性能和高效率。在考虑到其他不同于数控系统的嵌入式系统时,在考虑到其他不同于数控系统的嵌入式系统时,为了满足千变万化的需求,必须要求为了满足千变万化的需求,必须要求GUI系统是系统是可配置的。在可配置的。在CNC系统中得到成功应用之后,系统中得到成功应用之后,立即着手于立即着手于MiniGUI可配置的设计。可配置的设计。通过通过Linux下的下的automake和和autoconf接口,接口,实现了大量的编译配置选项,通过这些选项可指实现了大量的编译配置选项,通过这些选项可指定定MiniGUI库中包括哪些功能而同时不包括哪些库中包括哪些功能而同时不包括哪些功能。功能。因此,因此,MiniGUI是一个非常适合于工业控制实时是一个非常适合于工业控制实时系统以及嵌入式系统的可定制的、小巧的图形用系统以及嵌入式系统的可定制的、小巧的图形用户界面支持系统。户界面支持系统。8.2QT8.2.1QT/E8.2.2QTOPIA8.2.3Qt编程特点编程特点8.2.4Signal和和Slot8.2.5一个一个QT程序程序8.2.6QTE程序开发全过程程序开发全过程8.2.1QT/EQt/Embedded(简称简称QtE)是一个专门为嵌入式系是一个专门为嵌入式系统设计图形用户界面的工具包。统设计图形用户界面的工具包。Qt是挪威是挪威Trolltech软件公司的产品,它为各种系统提供图软件公司的产品,它为各种系统提供图形用户界面的工具包,形用户界面的工具包,QtE就是就是Qt的嵌入式版本。的嵌入式版本。QT/E特点特点QT是跨平台的,可支持的平台包括:是跨平台的,可支持的平台包括:MS/Windows95、Windows98、WindowsNT4.0、Windows2000、WindowsXP;Unix/X11Linux、SunSolaris、HP-UX、CompaqTrue64Unix、IBMAIX、SGIIRIX和很和很多其它多其它X11平台;平台;MacintoshiMacOSX;嵌入式的,包含有嵌入式的,包含有FramBuffer的的Linux平台。平台。功能可裁减:功能可裁减:Qt/Embedded提供了大约提供了大约200个可配置的特征个可配置的特征资源丰富:资源丰富:trolltech的主页:的主页:http:/www.trolltech.com/支持匿名访问的支持匿名访问的FTP:ftp:/ftp.trolltech.com新闻组服务器:新闻组服务器:nntp.trolltech.com非官方的非官方的Qt文档中文翻译小组:文档中文翻译小组:http:/www.qiliang.net/qt/index.html工具丰富工具丰富提供了构建提供了构建(qmake)、可视化设计、可视化设计(uic和和qdesigner)、国际化、国际化(linguist)、文档系统)、文档系统(assistant)等一系列非常好用的工具。尤其是文等一系列非常好用的工具。尤其是文档系统,绝对可以称得上是出色。档系统,绝对可以称得上是出色。丰富的丰富的API函数:函数:Qt/Embedded也可以看成是一组用于访问嵌入式也可以看成是一组用于访问嵌入式设备的设备的QtC+API;Qt/Embedded与与Qt/X11,Qt/Windows和和Qt/Mac版版本一样,提供的都是相同的本一样,提供的都是相同的API和工具。和工具。运行需要资源少、功能强大:运行需要资源少、功能强大:Qt/Embedded只要求一个较小的存储空间和内存。只要求一个较小的存储空间和内存。Qt/Embedded可以运行在不同的处理器上部署的可以运行在不同的处理器上部署的Linux系统,只要这个系统有一个线性地址的缓冲系统,只要这个系统有一个线性地址的缓冲帧并支持帧并支持C的编译器。的编译器。8.2.2QTOPIAQtopia是基于是基于Qt编编写的一个用于手持写的一个用于手持设备的用户信息管设备的用户信息管理软件,它集成了理软件,它集成了很多实用的程序。很多实用的程序。右图是一个预装右图是一个预装linux操作系统的操作系统的arm9开发版,开机开发版,开机后看到的图形界面后看到的图形界面就是就是qtopia。QTE和和Qtopia开发模型开发模型Linux KernelFramebufferQT/EmbeddedQT/X11XlibX Window ServerQT APIQTOPIA or Other Application8.2.3Qt编程特点编程特点初始化初始化窗口的创建窗口的创建组件的创建组件的创建事件事件退出事件程序退出事件程序整个整个Qt程序的执行过程程序的执行过程初始化初始化在在Qt应用程序中,首先要创建一个应用程序中,首先要创建一个QApplication对象,对象,QApplication类负责图形用户界面应用程类负责图形用户界面应用程序的控制流和主设置,在序的控制流和主设置,在main.cpp中定义如下:中定义如下:intmain(intargc,char*argv)QApplicationa(argc,argv);QApplication包含在包含在main()函数的事件循环体中,函数的事件循环体中,对所有来自窗口系统和其它源文件的事件进行处对所有来自窗口系统和其它源文件的事件进行处理和调度,还包括处理应用程序的初始化和结束,理和调度,还包括处理应用程序的初始化和结束,并且提供会话管理。并且提供会话管理。在在Qt应用程序中,不管有多少个窗口,应用程序中,不管有多少个窗口,QApplication对象只能有一个,而且必须在其他对对象只能有一个,而且必须在其他对象之前创建。象之前创建。QApplication类中封装了很多函数,其中包括:类中封装了很多函数,其中包括:系统设置:系统设置:setFont()用来设置字体用来设置字体事件处理:事件处理:sendEvent()用来发送事件用来发送事件GUI风格:风格:setStyles()设置图形用户界面的风格设置图形用户界面的风格颜色使用:颜色使用:colorSpec()用来返回颜色文件用来返回颜色文件文本处理:文本处理:translate()用来处理文本信息用来处理文本信息创建组件:创建组件:setmainWidget()用来设置窗口的主用来设置窗口的主组件组件在在Qt程序中,创建窗口比较简单,只需在程序中,创建窗口比较简单,只需在main.cpp文件中为文件中为ApplicationWindow建立一个建立一个指针:指针:ApplicationWindow*mw=newApplicatonWindow();ApplicationWindow是在是在Application.h中定义的中定义的类,它是一个类,它是一个QmainWindow的继承类的继承类窗口的创建窗口的创建组件的创建需要调用相应组件的类,并在头文件中组件的创建需要调用相应组件的类,并在头文件中包含此类的头文件或者创建自定义类,继承相应组包含此类的头文件或者创建自定义类,继承相应组件类的功能件类的功能#include“qpushbutton.h” classhello:publicQwidgethello类继承了类继承了Qwidget类的特征,并加入了自定义类的特征,并加入了自定义的特征功能的特征功能组件的创建组件的创建在在main.cpp的函数中需要创建的函数中需要创建hello类的实例,或类的实例,或创建创建QPushButton类的实例,才可以使用类的实例,才可以使用helloh(string);QPushButtonhello(“Hello,world!”,0);如果组件本身为窗口如果组件本身为窗口(可以作为应用程序主窗口可以作为应用程序主窗口),则无需设置主组件。上例中下压按钮创建时其构造则无需设置主组件。上例中下压按钮创建时其构造函数中的第二个参数为函数中的第二个参数为0,表示按钮所在窗口为主,表示按钮所在窗口为主窗口。窗口。否则需要调用成员函数否则需要调用成员函数setMainWidget()来进行设来进行设置主组件置主组件:a.setMainWidget(&h);组件创建时一般是不可见的,这样的好处在于避免组件创建时一般是不可见的,这样的好处在于避免大量组件创建时造成的屏幕闪烁现象,要使组件可大量组件创建时造成的屏幕闪烁现象,要使组件可见需要调用见需要调用QWidget类的成员函数类的成员函数show()来显示组来显示组件:件:h.show();事件事件在在Windows程序中,敲击键盘,鼠标指针在窗口程序中,敲击键盘,鼠标指针在窗口中的移动或鼠标按键动作等,都是事件中的移动或鼠标按键动作等,都是事件在在Windows中提供了提供了一种叫做回调的事件中提供了提供了一种叫做回调的事件处理方式。它通过翻译表,将事件映射为相应的处理方式。它通过翻译表,将事件映射为相应的动作,当组件得到事件通知,就去表中找出相应动作,当组件得到事件通知,就去表中找出相应的动作例程进行处理。这种机制需要应用程序注的动作例程进行处理。这种机制需要应用程序注册有关组件的回调函数或普通的事件处理函数,册有关组件的回调函数或普通的事件处理函数,以分发循环以分发循环Windows的事件的事件Qt事件的处理过程:事件的处理过程:QApplication的事件循环体的事件循环体从事件队列中拾取本地窗口系统事件或其他事件,从事件队列中拾取本地窗口系统事件或其他事件,译成译成QEvent(),并送给,并送给QObject:event(),最后,最后送给送给QWidget:event()分别对事件处理分别对事件处理在在Qt程序中,事件处理的方式也是回调,但与以程序中,事件处理的方式也是回调,但与以往所不同的是,事件的发出和接收采用了信号往所不同的是,事件的发出和接收采用了信号(signal)和插槽和插槽(slot)机制,无须调用翻译表。利机制,无须调用翻译表。利用信号和插槽进行对象间的通信是用信号和插槽进行对象间的通信是Qt的最主要特的最主要特征之一。征之一。当对象状态发生改变的时候,发出当对象状态发生改变的时候,发出signal通知所通知所有的有的slot接收接收signal,尽管它并不知道哪些函数定,尽管它并不知道哪些函数定义了义了slot,而,而slot也同样不知道要接收怎样的也同样不知道要接收怎样的signalsignal和和slot机制真正实现了封装的概念,机制真正实现了封装的概念,slot除除了接收了接收signal之外和其它的成员函数没有什么不之外和其它的成员函数没有什么不同,而且同,而且signal和和slot之间也不是一一对应之间也不是一一对应退出事件程序退出事件程序退出事件程序,只需要在程序结束时返回一个退出事件程序,只需要在程序结束时返回一个exec(),例如:,例如:returna.exec();其中其中a为为QApplication的实例,当调用的实例,当调用exec()将将进入主事件的循环中,直到进入主事件的循环中,直到exit()被调用或主窗口被调用或主窗口组件被销毁组件被销毁整个整个Qt程序的执行过程程序的执行过程8.2.4Signal和和SlotSignal和和Slot的声明的声明Signal和和Slot的连接的连接Signal和和Slot的连接方式的连接方式Signal和和Slot的声明的声明在在Qt程序设计中,凡是包含程序设计中,凡是包含signal和和slot的类中的类中都要加上都要加上Q_OBJECT的定义,下面的例子给出了的定义,下面的例子给出了如何在一个类中定义如何在一个类中定义signal和和slot:classStudent:publicQObjectQ_OBJECTpublic:Student()myMark=0;intmark()constreturnmyMark;publicslots:voidsetMark(intnewMark);signals:voidmarkChanged(intnewMark);private:intmyMark;signal的发出一般在事件的处理函数中,利用的发出一般在事件的处理函数中,利用emit发出发出signal,在下面的例子中在在事件处理,在下面的例子中在在事件处理结束后发出结束后发出signalvoidStudent:setMark(intnewMark)if(newMark!=myMark)myMark=newMark;emitmarkChanged(myMark);Signal和和Slot的连接的连接在在signal和和slot声明以后,需要使用声明以后,需要使用connect()函函数将它们连接起来。数将它们连接起来。connect()函数属于函数属于QObject类的成员函数,它能够连接类的成员函数,它能够连接signal和和slot,也可,也可以用来连接以用来连接signal和和signal函数原形如下:函数原形如下:boolQObject:connect(constQObject*sender,/发送对象发送对象constchar*signal,/信号信号constQObject*receiver,/接收对象接收对象constchar*member/槽槽)在使用在使用connect()函数进行来接的时候,还需要用函数进行来接的时候,还需要用到到SIGNAL()和和SLOT()这两个宏,使用方法如下:这两个宏,使用方法如下:QLabel*label=newQLabel;QScrollBar*scroll=newQScrollBar;QObject:connect(scroll,SIGNAL(valueChanged(int),label,SLOT(setNum(int);Signal和和Slot的连接方式的连接方式同一个信号连接多个插槽同一个信号连接多个插槽connect(slider,SIGNAL(valueChanged(int),spinBox,SLOT(setValue(int);connect(slider,SIGNAL(valueChanged(int),this,SLOT(updateStatusBarIndicator(int);多个信号连接到同一个插槽多个信号连接到同一个插槽connect(lcd,SIGNAL(overflow(),this,SLOT(handleMathError();connect(calculator,SIGNAL(divisionByZero(),this,SLOT(handleMathError();一个信号连接到另一个信号一个信号连接到另一个信号connect(lineEdit,SIGNAL(textChanged(constQString&),this,SIGNAL(updateRecord(constQString&);取消一个连接取消一个连接disconnect(lcd,SIGNAL(overflow(),this,SLOT(handleMathError();取消一个连接不是很常用,因为取消一个连接不是很常用,因为Qt会在一个对象会在一个对象被删除后自动取消这个对象所包含的所有的连接被删除后自动取消这个对象所包含的所有的连接下面通过编写一个下面通过编写一个“HelloEmbedded”程序来了程序来了解解Qt。#include#includeintmain(intargc,char*argv)QApplicationapp(argc,argv);QLabel*hello=newQLabel(helloQt/Embedded!,0);app.setMainWidget(hello);hello-show();returnapp.exec();8.2.5一个一个QT程序程序程序第程序第1行和第行和第2行包含了两个头文件,这两个头行包含了两个头文件,这两个头文件中包含了文件中包含了QApplication和和QLabel类的定义。类的定义。第第5行创建了一个行创建了一个QApplication对象,用于管理对象,用于管理整个程序的资源,它需要整个程序的资源,它需要2个参数,因为个参数,因为Qt本身本身需要一些命令行的参数。需要一些命令行的参数。第第6行创建了一个用来显示行创建了一个用来显示HelloQt/Embedded!的组件。在的组件。在Qt中,组件是一个可视化用户接口,中,组件是一个可视化用户接口,按钮、菜单、滚动条都是组件的实例。组件可以按钮、菜单、滚动条都是组件的实例。组件可以包含其它组件,例如,一个应用程序窗口通常是包含其它组件,例如,一个应用程序窗口通常是一个包含一个包含QMenuBar、QToolBar、QStatusBar和其它组件的一个部件。在和其它组件的一个部件。在QLabel函数中的参函数中的参数数0表示所在窗口为主窗口。表示所在窗口为主窗口。第第7行设置行设置hello为程序的主组件,当用户关闭主为程序的主组件,当用户关闭主组件后,应用程序将会被关闭。如果没有主组件组件后,应用程序将会被关闭。如果没有主组件的话,即使用户关闭了应用程序也会在后台继续的话,即使用户关闭了应用程序也会在后台继续运行。运行。第第8行使行使hello组件可视,一般来说组件被创建后组件可视,一般来说组件被创建后都是被隐藏的,因此可以在显示前根据需要来订都是被隐藏的,因此可以在显示前根据需要来订制组件,这样的好处是可以避免组件创建所造成制组件,这样的好处是可以避免组件创建所造成的闪烁。的闪烁。第第9行把程序的控制权交还给行把程序的控制权交还给Qt,这时候程序进入,这时候程序进入就绪模式,可是随时被用户行为激活,例如点击就绪模式,可是随时被用户行为激活,例如点击鼠标、敲击键盘等。鼠标、敲击键盘等。8.2.6QTE程序开发全过程程序开发全过程以一个以一个QT4为例,其它版本可能为例,其它版本可能会有些不同会有些不同第一步第一步编译编译QT-X11环境环境编译编译QT/E编写编写QT-X11程序程序第一步第一步PC机上安装机上安装linux安装安装ARMLinux工具链工具链下载下载QT:qt-embedded-linux-opensource-src-4.4.0.tar.bz2tslib-1.4.tar.bz2qt-x11-opensource-src-4.4.0.tar.gzQT下载网站:下载网站:http:/qt.nokia.com/downloads编译编译QT-X11环境环境解压解压qt-x11-opensource-src-4.4.0.tar.gz在源码目录下执行:在源码目录下执行:./configuregmakegmakeinstall1、编译、编译tslib1.4触摸屏库触摸屏库:解压解压tslib-1.4.tar.bz2修改其中的修改其中的bulild.sh,将编译工具链设置成基于,将编译工具链设置成基于arm-linux的的执行执行./build.sh2、编译、编译QT/E库库:解压解压qt-embedded-linux-opensource-src-4.4.0.tar.bz2将上一步编译好的库文件和头文件拷贝到相关目将上一步编译好的库文件和头文件拷贝到相关目录,并利用录,并利用./configure配置好配置好makemakeinstall编译编译QT/E3、测试触摸屏及、测试触摸屏及QT/E程序程序设置环境变量设置环境变量执行触摸屏校准程序执行触摸屏校准程序ts_calibrate,进入,进入5点触点触摸屏校准程序并存储配置文件摸屏校准程序并存储配置文件ts.conf其他触摸屏测试程序还有其他触摸屏测试程序还有ts_test、ts_print等等执行执行QT/E带触摸屏的例子程序:例子程序在带触摸屏的例子程序:例子程序在examples,可以交叉编译后在,可以交叉编译后在ARM端执行端执行编写编写QT-X11程序程序运行运行bin目录下的目录下的designer,利用,利用QtDesigner可以方便设计图形界面,一般步骤:可以方便设计图形界面,一般步骤:创建和初始化组件创建和初始化组件设置组件的布局设置组件的布局设置设置Tab键的次序键的次序建立信号与插槽的连接建立信号与插槽的连接QTdesigner起始界面起始界面选择一个窗口布局选择一个窗口布局Widget点击点击-创建创建拖拽几个简单的控件进行界面设计拖拽几个简单的控件进行界面设计初始化控件及相关属性内容初始化控件及相关属性内容建立信号与槽的连接建立信号与槽的连接show按钮与文本编辑框的连接按钮与文本编辑框的连接clicked-clear第二组信号与槽的连接第二组信号与槽的连接exit按钮与按钮与Form的连接的连接clicked-closed退出界面编辑保存为退出界面编辑保存为UI格式格式testx11.ui根据根据ui文件编写包含文件编写包含main函数的函数的cpp文件文件,如下如下#includeui_testx11.hintmain(intargc,char*argv)QApplicationapp(argc,argv);QWidget*widget=newQWidget;Ui:Formui;ui.setupUi(widget);widget-show();returnapp.exec();执行执行qmake-project,生成,生成.pro文件文件执行执行qmake生成生成makefile文件文件执行执行make编译生成可执行文件编译生成可执行文件运行运行./testqt-x11如果想在如果想在ARM上运行刚才上运行刚才QTX11编写的程序代编写的程序代码,无需更改,使用码,无需更改,使用ARM工具链重新编译程序,工具链重新编译程序,即可生成即可生成Qt/E的程序。然后在目标平台上执行即的程序。然后在目标平台上执行即可。可。结束语结束语谢谢大家聆听!谢谢大家聆听!67
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号