qt基础(嵌入式用户图形界面编程)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、QT/E
• 注意:QT 与 QT/Embedded 的区别 •
2、QT/E
•
2、QT/E :QT类库架构
•
2.1 QT/E 特点
• 2.1.1 跨平台 • 可支持的平台包括:
• ◆ MS/Windows 95、Windows 98、WindowsNT 4.0、Windows 2000、Windows XP; • ◆ Unix/X11 Linux、Sun Solaris、HP-UX、Compaq True64Unix、 IBM AIX、SGI IRIX • 和很多其它X11 平台; • ◆ Macintoshi Mac OSX; • ◆ 嵌入式的,包含有FramBuffer 的Linux 平台。
Signal和Slot的声明(1/2)
在Qt程序设计中,凡是包含signal和slot的类中都要 加上Q_OBJECT的定义
Signal和Slot的声明(2/2)
signal的发出一般在事件的处理函数中,利用 emit发出signal,在下面的例子中在在事件处 理结束后发出signal
Signal和Slot的连接(1/2)
• • 1.2 嵌入式图形系统的发展史
1. 早期嵌入式系统功能简单,对图形用户界面 需求并不是太大。而且当时的图形系统对硬 件要求太高,在嵌入式上实现几乎没有可能。 2. 后来,应市场需求产生一些高级GUI工具包, 使得嵌入式linux下的图形开发成为可能,而 且易于编写出更好、更漂亮的界面。
1、嵌入式图形系统简介
2.1 QT/E 特点
• 2.2.3 工具丰富 • 提供了构建(qmake)、可视化设计 (uic和qdesigner)、国际化(linguist)、 文档系统(assistant)等一系列非常好用 的工具。
2.1 QT/E 特点
• 2.2.4 丰富的API函数
• Qt/Embedded 也可以看成是一组用于访问嵌入 式设备的 Qt C++ API; • Qt/Embedded 的Qt/X11,Qt/Windows 和 Qt/Mac版本提供的都是相同的API和工具。
事件运行机制
QApplication
QApplication和QWidget都是QObject类 的子类 QApplication类负责GUI应用程序的控制 流和主要的设置,它包括主事件循环体, 负责处理和调度所有来自窗口系统和其他 资源的事件,并且处理应用程序的开始、 结束以及会话管理,还包括系统和应用程 序方面的设置。对于一个应用程序来说, 建立此类的对象是必不可少的
Qt-embedded-3.1.1 Qtopia-free-1.7.0
5 QTE开发关键技术
1. QT对象模型 元对象系统 信号和插槽 2. QObject类 对象树 事件处理
元对象系统
是一个C++扩展,使得QT更适合真正 的组件GUI编程 使用元编译器moc产生能被标准C++编 译器访问的附加C++代码 带有moc预编译器的C++基本上提供了 面向对象的灵活性,并保持了C++的执行 效率和扩展性
2.1 QT/E 特点
• 2.2.6 功能可裁减 • Qt/Embedded 提供了大约200个可配置的 特征
3 QTOPIA
• 3.1 简介 • Qtopia是基于 Qt编写的一个用于手持设 备的 用户信息管理软件,它集成了很多实 用的程序。 • 市面上买到的预装 linux操作系统的 arm9开发版,开机后看到的图形界面多是 qtopia。
• 1,QT 与 QT/E 最大的不同? • 2, QTOPIA与QT的关系? • 3,众多嵌入式图形开发库中,为什么大 多数人选择QT/E?
4 QTE开发环境搭建
宿主机移植所需工具及环境变量声明:
工具软件 Qt-x11-3.1.1 描述 Qvfb-虚拟帧缓存工具 Uic-用户界面编辑器 Designer Qt 图形设计器 Qt库支持 libqte.so 应用程序开发包 桌面环境
2.1 QT/E 特点
• 2.2.5 运行需要资源少、功能强大
• 相对X窗口下的嵌入解决方案而言, • Qt/Embedded只要求一个较小的存储空间( Flash)和内存。Qt/Embedded可以运行在不 同的处理器上部署的Linux系统,只要这个系 统有一个线性地址的缓冲帧并支持C++的编 译器。
信号和插槽
在Qt程序中,利用信号(signal)和插槽( slot)机制进行对象间的通信
事件处理的方式也是回调 当对象状态发生改变的时候,发出signal通知所 有的slot接收signal,尽管它并不知道哪些函数定义 了slot,而slot也同样不知道要接收怎样的signal
wenku.baidu.com
signal和slot机制真正实现了封装的概念,slot 除了接收signal之外和其它的成员函数没有什么 不同,而且signal和slot之间也不是一一对应的。
嵌入式用户图形界面编程
嵌入式用户图形界面编程
课程目的
1. 了解嵌入式图形系统 2. 掌握QT/E开发环境、关键技术 3. 通过实例熟悉基于Qt/E的嵌入式 GUI设计
1、嵌入式图形系统简介
• 1.1 Linux图形系统的发展史
•
linux本身没有图形界面, linux现在的 图形界面的实现只是linux下的应用程 序实现的。
1.3.3 MiniGUI
• MiniGUI是由北京飞漫软件技术有限公司主 持的一个自由软件项目(遵循GPL条款),其目标 是为基于Linux的实时嵌入式系统提供一个轻量 级的图形用户界面支持系统。 • MiniGUI为应用程序定义了一组轻量级的窗 口和图形设备接口。利用这些接口,每个应用程 序可以建立多个窗口,而且可以在这些窗口中绘 制图形。用户也可以利用MiniGUI建立菜单、按 钮、列表框等常见的GUI元素。
在signal和slot声明以后,需要使用connect()函数将它们连接起来。 connect()函数属于QObject类的成员函数,它能够连接signal和slot, 也可以用来连接signal和signal,函数原形如下: boolQObject::connect( const QObject* sender, const char * signal, const QObject* receiver, const char * member ) 其中第一个和第三个参数分别指出signal和slot是属于那个对象或组件
QWidget
QWidget类是所有用户接口对象的基类, 它继承了QObject类的属性。组件是用户 界面的单元组成部分,它接收鼠标、键盘 和其它从窗口系统来的事件,并把它自己 绘制在盘屏幕上 QWidget类有很多成员函数,但一般不直 接使用,而是通过子类继承来使用其函数 功能。如,QPushButton、QlistBox等都 是它的子类
3 QTOPIA
• 3.1 简介
3 QTOPIA
• 3.2 QTE和Qtopia开发模型
QTOPIA or Other Application QT API QT/X11 QT/Embedded Xlib X Window Server Frame-buffer Linux Kernel
课堂回顾
•
1、嵌入式图形系统简介
• • 1.1 Linux图形系统的发展史 但是X的存在可以方便用户使用电脑。 WINDOWS95及以后的版本就不一样了,他 们的图形界面是操作系统的一部分,图形界 面在系统内核中就实现了,没有了图形界面 windows就不成为windows了,但linux却不 一样,没有图形界面linux还是 linux,很多 装linux的 WEB服务器就根本不装X服务器。 这也是WINDOWS和linux的重要区别之一。
1.3.4 OpenGUI
• OpenGUI基于一个用汇编实现的x86图形 内核,提供了一个高层的C/C++图形/窗口接 口,它的资源消耗小,可移植性差,不支持 多进程。
1.3.5 主流的Linux窗口系统
2、QT/E
• Qt/Embedded(简称QtE)是一个专门 为嵌入式系统设计图形用户界面的工具 包。Qt是挪威Trolltech软件公司的产品, 它为各种系统提供图形用户界面的工具 包,QtE就是Qt的嵌入式版本。
2.1 QT/E 特点
• 2.2.2 资源丰富
• • • • trolltech 的主页:http://www. trolltech.com/ 支持匿名访问的FTP: ftp://ftp.trolltech.com 新闻组服务器:nntp.trolltech.com 非官方的Qt 文档中文翻译小组: http://www.qiliang.net/qt/index.html
•
1.3.2 Microwindows
• Mirowindows是嵌入式系统中广为使用 的一种图形用户接口,其官方网站是: http://www.microwindows.org。这个项目的 早期目标是在嵌入式Linux平台上提供和普 通个人电脑上类似的图形用户界面。 • MicroWindows,其主要特色在于提供 了C/S体系结构,同时也提供了相对完善的 图形功能。但却无任何硬件加速能力,图形 引擎中也存在着许多未经优化的低效算法。
对象树
6 实例一
• 一、代码编辑 • 二、程序编译
• #include <qapplication.h>
• • • • • • • • • • • #include <qpushbutton.h> int main(int argc, char ** argv) { QApplication a(argc, argv); QPushButton hellobtn("Hello world!", 0); hellobtn.resize(100, 20); a.setMainWidget(&hellobtn); hellobtn.show(); return a.exec();
1、嵌入式图形系统简介
•
•
1.1 Linux图形系统的发展史
图形界面并不是linux 的一部分,linux只是 一个基于命令行的操作系统。 linux和Xfree的关系就相当于当年的DOS和 windows3.0 一样,windows3.0 不是独立的操 作系统,它只是 DOS的扩充,是DOS下的应 用程序级别的系统,不是独立的操作系统, 同样XFree只是linux下的一个应用程序 而已 ,不是系统的一部分。
• 1. 2. 3. 4. 5. 1.3 常用的几种嵌入式GUI工具包 紧缩的 X Window 系统 MicroWindows MiniGUI OpenGUI Qt/ Embedded
1.3.1 TinyX
• TinyX,是标准X-Windows在嵌入式系 统的小巧实现,作为一个图形环境,XWindows是成功的,但由于在体系接口 上的原因,限制了它对游戏、多媒体的 支持能力。
Signal和Slot的连接(2/2)
在使用connect()函数进行来接的时候,还需要用到 SIGNAL( )和SLOT( )这两个宏,使用方法如下:
信号与插槽的连接方式
QObject类
QObject是Qt类体系的唯一基类,是Qt各种功能的源头 活水,就象MFC中的CObject和Dephi中的TObject 对象树:QObject在对象树中组织它们自己。当你以另 外一个对象作为父对象来创建一个QObject时,它就被 添加到父对象的children()列表中,并且当父对象被删 除的时候,它也会被删除。这种机制很好的适合了图形 用户界面应用对象的需要。 事件:事件是由窗口系统或qt本身对各种事务的反应而 产生的。当用户按下、释放一个键或鼠标按钮,一个键 盘或鼠标事件被产生;当窗口第一次显示,一个绘图事 件产生,从而告知最新的可见窗口需要重绘自身。大多 数事件是由于响应用户的动作而产生的,但还有一些, 比如定时器等,是由系统独立产生的。
1、嵌入式图形系统简介
• • • • • • • 1.1 Linux图形系统的发展史 X Window:业界标准 Open Look:来自SUN与AT&T Motif :来自IBM/HP的OSF CDE :UNIX的标准图形界面 QT : KDE 的开发基础 GNOME :信仰的产物
1、嵌入式图形系统简介