Qt Embedded是挪威公司的图形化界面开发工具QT的嵌入式版本,它经过QTAPI与LinuxI/O以及Framebuffer直接交互,拥有较高的运行效率,并且总体采用面向对象编程,拥有良好地体系架构和编程模式. 编程
当在资源稀缺的设备上开发嵌入式应用程序时,Qt for Windows CE 和Qt for Embedded Linux经过调整一系列参数的开启或关闭来内存及CPU的需求。这些选择参数方法的范围主要在编程风格,连接方式及内存分配。 缓存
着重注意的是,最直接节省资源的办法是在编译时去掉不须要的特性。详细能够见文档中的fine tuning features部分。许多CPU和内存是经过ELF (Executable and Linking Format)连接进程,重大的节省能够经过静态编译程序的方式实现;而不像是在实际执行中,采集与Qt库有关的部分而且动态连接,全部的应用程序将被建立成一个独立的执行文件,这个文件采用静态方式连接到Qt库上。 架构
这些将改善程序启动时间和减小内存占有率,但前提它会损害灵活实用的特性(一旦增长新的应用部分,必须从新编译一个独立的执行文件)和程序健壮性假如一个应用部分有bug,将危害到其余的应用部分)。 ide
为了将Qt编译成为一个静态库,在编译时采用-static参数:./configure –static 为了将应用程序套装创建为一个一体化的应用,应当设计各个应用做为单独的控件(或者控件集)并尽量地使用最少的代码量在main()函数。而后,设计一个独立的应用程序能够提升其余应用程序见交互的方法。Qt Extended platform就是采用典型的实例:它既可使用一系列动态连接执行建立,也能够做为单独的一个静态的独立应用程序。 函数
需注意的时,程序仍将动态地连接标准C库以及其它库,由于在目标平台上可能会有其余的应用程序使用它们。 工具
当安装最终客户端应用程序时,这个方式不必定是个选择,可是当在为一个受CPU和内存限制的设备开发一个单独的应用程序套装时,这个选择是十分有益的。void *operator new[](size_t size) { return malloc(size); } void *operator new(size_t size) { return malloc(size); } void operator delete[](void *ptr) { free(ptr); } void operator delete[](void *ptr, size_t) { free(ptr); } void operator delete(void *ptr) { free(ptr); } void operator delete(void *ptr, size_t) { free(ptr); }以上这些实例显示了必要的代码采用C的内存分配。
当运行时,Qt使用了后备存放区。好比,一个绘图缓存,能够减小闪烁和支持如重叠的图形操做。 性能
通常,默认的流程是这样的,对于每一个客户端,将本身的控件传入内存,同时,服务端负责将这些内容从内存中取出并在屏幕上绘制。可是有些硬件是众所周知的,同时已经有嵌入式软件的案例,这些对于绕开后备存放区是颇有帮助的,能够运行客户端直接地熟练地操做硬件。这里有两种方式来实现直接绘制: 开发工具
第一种方式是对每一个控件使用Qt::WA_PaintOnScreen窗口属性,另外一种是使用了QDirectPainter类来保存帧缓存的区域。想获取更多信息,能够参考architecture 文档部分的direct painting细节。 设计