嵌入式培训资料:Qt/Embedded编程入门 |
|
Qt/Embedded以原始Qt为基础,并做了许多出色的调整以适用于嵌入式环境。Qt/Embedded通过Qt API与Linux I/O设施直接交互,成为嵌入式Linux端口。同Qt/X11相比,Qt/Embedded很省内存,因为它不需要一个X服务器或是Xlib库,它在底层抛弃了X lib,采用framebuffer(帧缓冲)作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件。Qt/Embedde的应用程序可以直接写内核缓冲帧,这避免开发者使用繁琐的Xlib/Server系统。图1.1比较了Qt/Embedded与Qt/X11的架构区别。
使用单一的API进行跨平台的编程可以有很多好处。提供嵌入式设备和桌面计算机环境下应用的公司可以培训开发人员使用同一套工具开发包,这有利于开发人员之间共享开发经验与知识,也使得管理人员在分配开发人员到项目中的时候增加灵活性。更进一步来说,针对某个平台而开发的应用和组件也可以销售到Qt支持的其他平台上,从而以低廉的成本扩大产品的市场。 (1)窗口系统 一个Qt/Embedded窗口系统包含了一个或多个进程,其中的一个进程可作为服务器。该服务进程会分配客户显示区域,以及产生鼠标和键盘事件。该服务进程还能够提供输入方法和一个用户接口给运行起来的客户应用程序。该服务进程其实就是一个有某些额外权限的客户进程。任何程序都可以在命令行上加上“-qws”的选项来把它作为一个服务器运行。 服务器与客户之间使用UNIX Domain Socket进行通信,通过重载QApplication的qwsEventFilter()函数,可以对客户从服务器收到的所有事件进行直接的访问。客户与服务器,以及客户之间使用QCOP协议进行通信,QCOP是一个在不同的通道上进行消息传递的多对多通信协议。在Qt/Embedded中,这种通信机制使用QCopChannel类来实现,有关这个类的描述,请读者参考相关资料。 QProcess类提供了另外一种异步的进程间通信机制。它用于启动一个外部的程序并且通过写一个标准的输入和读取外部程序的标准输出和错误码来和它们通信。 (2)字体 Qt/Embedded使用FreeType 2字体引擎来产生字体的输出,所支持的格式取决于本机所安装的FreeType库的版本。另外,Qt/Embedded支持Qt预渲染的字体格式(QPF与QPF2)。QPF2是Qt/Embedded自带的格式,QPF是由Qt/Embedded 2.x,3.x所继承过来的。所有支持的字体均使用Unicode字符编码,一个完整的16点阵的Unicode字体的存储空间通常超过1MB。 FreeType 2库支持下列字体格式:TrueType(TTF),PostScript Type1(PFA/PFB),Bitmap Distribution Format(BDF),CID-keyed Type1,Compact Font Format(CFF),OpenType fonts,SFNT-based bitmap fonts,Portable Compiled Format(PCF),Microsoft Windows Font File Format(Windows FNT),Portable Font Resourse(PFR),Type 42(limited support)。可以为FreeType 2字体引擎添加模块,以使其支持其它的字体。 Qt预渲染字体(QPF2)是Qt/Embedded特有的、与架构无关的、轻量级的字体格式。Nokia提供了交叉编译工具makeqpf,可以由系统字体中生成QPF2文件。另外,考虑到兼容性,Nokia提供了对继承而来的QPF格式的支持。 (3)输入设备及输入法 Qt/Embedded支持几种鼠标协议:BusMouse、IntelliMouse,Microsoft和MouseMan.Qt/ Embedded还支持NECVr41XX和iPAQ的触摸屏。通过从QWSMouseHandler或者Qcalibra- tedMouseHandler派生子类,开发人员可以让Qt/Embedded支持更多的客户指示设备。 Qt/Embedded支持标准的101键盘和Vr41XX按键,通过子类化QWSKeyboardHandler可以让Qt/Embedded支持更多的客户键盘和其他的非指示设备。 对于非拉丁语系字符(例如阿拉伯,中文,希伯来和日语)的输入法,需要把它写成过滤器的方式,并改变键盘的输入。输入法的作者应该对全部的Qt API的使用有完整的认识。在一个无键盘的设备上,输入法成了惟一的输入字符的手段。Qtopia提供了4种输入方法:笔迹识别器、图形化的标准键盘、Unicode键盘和基于字典方式提取的键盘。 (4)屏幕加速 通过子类化QScreen和QRasterPaintEngine可以实现硬件加速,从而为屏幕操作带来好处。Trolltech提供了Mach64和Voodoo3视频卡的硬件加速的驱动例子,同时可以按照协议编写其他的驱动程序。 精品课程推荐:QT应用开发培训,帮助学员熟悉Qt 的开发工具与开发环境,了解Qt 基本组件与框架,能够基于各种常见的操作系统平台撰写Qt 窗口程序,并掌握 Qt 在嵌入式系统的核心运用,包括Qt/Embedded编程方法和编程技能、常用的基础类、信号和槽的概念和对象间通讯机制及图形界面的编写。 热点链接:
1、FPGA硬件系统设计实用技巧 |