zoukankan      html  css  js  c++  java
  • QT、QTE、qtopia区别

    QT、QTE、qtopia区别

    Qt的授权是分为两条线,商业版和开源版。如果使用商业版的Qt,那么开发出的程序可以是私有的和商业的;如果使用的是开源版的Qt,由于其使用的是GPL协议,那么可发出的程序也必须是GPL的。不过自从qt 4.5.0版本,诺基亚公司使用了LGPL协议,那么写出的程序就可以据为己有了!

    Qt 的版本是按照不同的图形系统来划分的,目前分为四个版本:
    Win32版,适用于Windows平台;
    X11版,适合于使用了x系统的各种 linux 和 unix的平台;
    Mac版,适合与苹果MacOS;
    embedded版,适合于具有帧缓冲(frame buffer)的linux 的平台。

    区分----------------------------------------------------------------->

    Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等。由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Qt都指用于Linux/Unix的Qt/X11。一般命名以qt-x11-opensource-xxx!

    QT/E -> Qtopia-core -> Qt-embedded-opensource(同一种鸟):Qt 在刚出现的时候,对于Linux和Unix系统,只有构建于Xlib之上的X11版。但随着Linux操作系统在嵌入式领域的应用日渐广泛,Qt推出了嵌入式的版本Qt/E。由于嵌入式受限的硬件环境往往难以运行庞大的X服务器,Qt/E去掉了X Lib的依赖而直接工作于Frame Buffer上,因而效率更高,但它并不是Qt的子集,而应该是超集,部分机制(如QCOP等)不能用于Qt/X11中。


    Qtopia(注意不是Qtopia-core,两者是不一样的):一般命名为qtopia-opensource,最初是sourceforge.net上的一个开源项目,全称是Qt Palmtop Environment,是构建于Qt/E之上一个类似桌面系统的应用环境,包括了PDA和手机等掌上系统常见的功能如电话簿、日程表等。现在Qtopia 已经成为了Trolltech的又一个主打产品,为基于Linux操作系统的PDA和手机提供了一个完整的图形环境。

    值得特别注意的是在版本4之前,Qt/E和Qtopia是不同的两套程序,Qt/E是基础类库,Qtopia是构建于Qt/E之上的一系列应用程序。但从版本4开始,Trolltech将Qt/E并入到了Qtopia产品线中去了,并推出了新的Qtopia4。但实际上原来的Qt/E仍然作为基础类库,只是改名为Qtopia Core了,也许又感觉Qtopia Core跟Qtopia容易让人搞混,所以又改名为qt-embedded-linux-opensource-linux/wince(QT也支持Wince )。它作为嵌入式版本的核心,既可以与Qtopia配合,也可以独立使用。而原来的Qtopia则被分成几层,核心的应用框架和插件系统被称为 Qtopia Platform,上层的应用程序则按照不同的目标用户分为不同的包,如Qtopai PDA,Qtopia Phone。

    Qte的改名过程,Qte-->Qtopia Core-->Qt-embedded-linux-xxxx

    这几个其实差不多是一个东西,名称很容易搞混。

    记住在QT4版本前要安装Qtopia需要先装Qt/E,但之后的就不需要了。4之后的Qtopia 已经带有QT/E库了

    所以总的来说,QT也就三种:面向桌面的x11、面向嵌入式的Qt/E、以及面向嵌入式带各种应用程序的Qtopia桌面系统!!!

     

     

    Qt

    泛指 Qt software的所有版本的图像界面库,包括 Qt/X11(Unix/Linux),Qt Windows, Qt Mac 等,但这只是相对于二进制来说的。Qt作为一个跨平台的GUI 框架,在源码上对所有平台都是一致的。Unix/Linux上最流行的桌面环境之一KDE就是采用Qt来写的。

    Nokia 在2008年收购 Trolltech 后,将 Qt 更名为 Qt Software,随后改为 Qt Development Frameworks。而后 Nokia 开发了 IDE 工具 Qt Creator,于是Qt FrameWork + Qt Creator = Qt SDK。

    Qte:Qt/Embeded for linux

    它是用于嵌入式 Linux 系统的 Qt 版本,也是一套界面库,Qt/Embeded 也简称 Qte 或 Qt/E,Qte 去掉了 X Lib 的依赖而直接工作在 Framebuffer 上,而且Qte在此基础上实现了自己的窗口管理系统QWS(Qt Windows System),这是Qte与Qt/X11最大的区别。因此Qte可以在嵌入式Linux系统中没有X11库的环境下构建独立的图形用户界面,而且不会占用太多的嵌入式系统资源。

    Qte为方便嵌入式Qt应用的开发,还提供qvfb工具和makeqpf工具。qvfb工具可以实现Qte的应用能在PC上进行调试和测试,避开X11库的干扰。makeqpf工具则是用来制作qpf字体文件,用来在嵌入式界面中显示特殊渲染字体。

    Qtopia

    Qtopia 是一个基于 Qte 的类似桌面系统的应用环境,同时又为开发者为嵌入式设备编写程序提供了一套面向对象的API,包含有 PDA 版本和 Phone 版本。请注意是基于Qte 的应用环境,Qtopia 是用 Qte 这个库开发出来的应用程序,实际上Qtopia就相当于是嵌入式设备上的桌面环境,也就是类似于PC上的KDE,提供有自己的窗口管理、控制等GUI接口,简化了其上Qte应用的开发。就算不使用Qtopia也可以使用Qte创建自己的图形界面。

    Qtopia早期是一个sf.net上的开源项目,构建于Qte之上。从Qt4.1开始,Qt/Embedded改名为Qtopia Core,又从Qt4.4.1开始,Qtopia Core又改名为Qt for Embedded Linux,就是现在的Qte(eveywhere)。

    Qtopia Platform

    Qtopia平台由Qt/E, libqpe, libqtopia1, qtopiapim这些库和Qtopia server/launcher组成。应用开发者通过使用这些库提供的API来为Qtopia设备开发应用程序。Qtopia server/launcher作为主程序负责窗口系统的控制、进程间的通讯、启动所有的应用及其它的任务。

    Qtopia/Qte的版本

    • Qtopia1.7.0 / Qte 2.3.7
    • Qtopia2.1.1 / Qte 2.3.10
    • Qtopia2.1.2 / Qte 2.3.11
    • Qtopia2.2.0 / Qte 2.3.12 (包含在qtopia2.2源码包中,2005年,最后一个免费的版本)

    qtopia 2的应用基于qte 2.3.x的,qtopia 4的应用基于qtopia core(相当于原来的qte) 4.x。

    Qt 的概念:Qt 是泛指 Qt 的所有版本的图像界面库,比如 Qt/X11,Qt Windows, Qt Mac 等。由于 Qt
    最早是在 Linux 中随着 KDE 流行开来的,
    所以我们通常所说的 Qt 都是指的用于 Linux/Unix 的 Qt/X11。后
    面会讲到 Qt2、Qt3 和 Qt4,2、3 和 4 是指的 Qt 的版本号。
    Qt/Embeded 的概念:它是用于嵌入式 Linux 系统的 Qt 版本,Qt/Embeded 也简称 Qte 或 Qt/E(以下使
    用 Qte 表 示 ) Qte 去掉了 X Lib 的依赖而直接工作在 Framebuffer 上,虽然它是 Qt 的嵌入式版本,但是它

    不是 Qt/X11 的子集,它有部分机制(比如 QCOP 等)就不能用于 Qt/X11 中。
    Qtopia 是一个基于 Qte 的类似桌面系统的应用环境,包含有 PDA 版本和 Phone 版本。请注意是基于
    Qte 的应用环境,换个说法就是 Qte 是库(实际上也是库,叫基础类库)
    ,Qtopia 是用 Qte 这个库开发出来
    的应用程序。Qtopia 最高版本是 Qtopia-2.2.0,在这之后就没有再推出过免费的 Qtopia 了。
    Qtopia Core:可以认为是刚刚讲到的 Qte,虽然名字中含有 Qtopia,不过它的实质还是刚刚讲到的 Qte
    的基础类库。虽然从 Qt4 开始把 Qtopia Core 并到 Qtopia 的产品线中了,但实质上 Qtopia Core 还是基础类
    库,相当于 Qte。

  • 相关阅读:
    你所知道的微服务技术栈有哪些?请列举一二
    Spring Cloud核心组件,在微服务架构中,分别扮演的角色:
    两种跳转方式分别是什么?有什么区别?
    forward 和redirect的区别 ?
    Request对象的主要方法:
    Struts2 的封装方式有哪些?
    使用继承有什么好处?
    当数据需要进行大量更改时, String和StringBuffer谁是更好的选择?
    数组和向量之间有什么区别?
    启动一个线程是调用run()还是start()方法?
  • 原文地址:https://www.cnblogs.com/timssd/p/5641735.html
Copyright © 2011-2022 走看看