Qt/Embedded 简介

Posted zieckey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt/Embedded 简介相关的知识,希望对你有一定的参考价值。

2006-03-07, by netflying

Qt/Embedded


1、 Qt/Embedded体系结构
Qt/Embedded是基于Qt的嵌入式GUI和应用程序开发的工具包,它可运行多种嵌入式设备上,主要运行在嵌入式Linux系统上,并且需要C++编译器的支持,并为嵌入式应用程序提供Qt的标准API。
Qt/Embedded 的API是基于面向对象技术的。在应用程序开发上使用与Qt相同的工具包,只需在目标嵌入式平台上重新编译即可。使用所熟悉的桌面开发工具,来编写和保存一个嵌入式应用程序的源代码树,在移植到多种嵌入式平台时,只需要重新编译代码。
Qt/Embedded提供自身的轻量级窗口系统,比使用Xlib和X Window更加紧凑; Qt/Embedded 的设计原则是不依赖于X server或者Xlib,而是直接访问帧缓存,同其他解决方案如Qt/X11相比这样做最显著的效果是减少了内存消耗。只需要一个Qt/Embedded动态链接库就足以替代X server、Xlib库和其他嵌入式解决方案的图形工具包。
Qt/Embedded还可以在编译时去掉运行时所不需的特性,以减少内存的占用。Qt/Embedded动态链接库可以通过编译时去掉用不到的特性来减少在内存中的覆盖。通过设置src/tools/qconfig.h可以在安装时,定制用户所需的原有Qt功能的一个子集。这样就可以在嵌入式系统中减小Qt/Embedded的尺寸,减少应用程序的内存消耗;而且嵌入式系统中的应用程序集合总是相对固定的也是运用这一功能的重要原因。实现这一定制,只需在qconfig.h中定义宏来取消相应的特性。例如:QlistView窗口部件若要在编译时去掉,只需在qconfig.h中定义QT_NO_LISTVIEW宏即可。若一些特性是依赖于其他特性的,依赖关系是在文件src/tools/qfeatures.h中描述的。Qt/Embedded提供了超过200种可以设置的特性,通过选择链接,可以生成700KB到5000KB(Intel X86)之间大小的动态链接库。大部分用户使用的设置在1500KB到4000KB之间。而且QtE的应用程序也比其他工具开发的应用程序所占用的内存少。在系统中许多CUP时间和内存空间是被ELF(excutive linked file一种为Linux系统所采用的通用文件格式,支持动态连接)链接过程占用了。若使用静态链接技术就可以极大的减少资源的消耗。若运行时所需的应用程序和组件在编译前就可以确定下来,则把所有的应用程序编译链接成唯一的可执行文件,并静态链接于一个静态链接库(libqt.a)的方法比使用动态链接库(libqte.so)和一组链接于这个库的可执行文件更能减少资源消耗。这种方式减少了应用程序开始运行时的代价,提高了内存的利用率,所付出的代价就是降低了程序的灵活性(若添加新的应用程序,需要编译链接所有程序)和健壮性(如果其中一个应用程序又bug,很有可能会影响到其他的应用程序)。但这种方法对CPU和内存使用要求比较高的设备是非常有利的。若要编译Qt为静态链接库,把-static选项添加到设置中。若在编译时Qt所使用的应用程序和组件并不能完全确定,可以把一些Qt组件编译成动态链接库文件或者插件。客户定义外观组件,数据库引擎,字体格式阅读器,图片格式转换,文本编解码及窗口部件都能够被编译为插件,以减少核心动态链接库的尺寸,提供更多的灵活性。


2、Qt/Embedded应用程序的运行方式
Qt/Embedded的窗口系统由多个程序组成,其中一个作为主窗口程序,用来分配子窗口的显示区域,并产生鼠标和键盘事件。主窗口程序提供输入方式和启动子应用程序的用户界面。主窗口程序处理行为类似于子窗口程序,但有一些特殊。在命令行方式中键入-qws选项,任何应用程序都可以运行为主窗口程序。子窗口程序通过共享内存方式于主窗口程序进行通讯。通讯保持在一种很低的水平,子窗口程序可以不通过主窗口程序,而把所有绘制窗口的操作直接写到帧缓存,包括自身的标题栏和其他部件。所有这些都是由Qt/Embedded链接库自动完成,对开发者来说是完全透明的。子窗口程序使用QCOP通道于主程序交换信息。主程序只需简单的向QCOP广播信息,所有正在监听特定信道的应用程序就会收到。应用程序可以通过与received()信号相连的槽作出响应。QProcess类提供了另外一种同步进程间通讯方式,通过直接写外部程序的标准输入、读标准输出和标准错误信息。


3、Qt/Embedded的开发环境及工具
Qt/Embedded的应用程序也可以使用 标准工具在用户熟悉的环境下的工具开发,如Window平台下的Visual C++和Borland C++ Builder,Unix平台下的KDevelop等。在Unix平台下编译Qt/Embedded应用程序,可以在独立的控制台模式,也可以用X11应用程序虚拟的帧缓存。通过指定目标设备的长、宽和色深,虚拟帧缓存可以点对点的模拟物理设备,免除了调试过程中反复擦写闪存,加快了编译、链接、运行的环节。Qt/Embedded提供许多支持嵌入式开发的工具,其中两个非常重要的Qt工具qmake和Qt Designer。Qmake可以为Qt/Embedded链接库和应用程序生成makefile文件。Qmake可以从项目文件(.pro)为多种平台生成makefile文件,通过不同设置可以使应用程序方便的在多种平台间移植。Qt Designer可以使用可视化的方式设计对话框、窗口的,替代了设计代码手工编写。在Qt Designer中还可以使用布局管理器来平滑的设置窗口部件的布局,使用代码编写器编写代码,并且整合了qmake。

 

以上是关于Qt/Embedded 简介的主要内容,如果未能解决你的问题,请参考以下文章

体验构建和使用 Qt Embedded

Qt Embedded:使用 QGraphicsView 和 QGraphicsWidget 在两个屏幕上显示

仅由 UDLR 按钮操作的虚拟键盘的 Qt 焦点处理

Qt4.8 内嵌。使用 QCursor::setPos() 调整鼠标输入会导致光标抽动

Qt编程是干啥的啊!要用啥编译器!

Word Embedding的发展和原理简介