Qt的由来和发展

Stella981
• 阅读 861

一、Qt是什么

  1、Qt 是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。
  2、Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程。
  3、2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。
  4、2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP。

二、Qt的由来和发展

  1991年,Haavard和Eirik开始一起合作设计、编写最终成为Qt的那些类。在随后的一年中,Eirik提出了“信号和槽”的设想——一个简单并且有效的强大的图像用户编程规范。而现在,他已经可以被多个工具包实现。Haavard实践了这一想法,并且据此创建了一个手写代码的实现系统。到1993年,Haavard和Eirik已经开发出了Qt的第一套图像内核程序,并且能够利用它实现他们自己的一些窗口部件。同年末,为了创建“世界上最好的C++图形用户界面框架”,Haavard提议一起进军商业领域。

  1994年成为两位年轻程序员不幸的一年,他们没有客户,没有资金,只有一个未完成的产品,但是他们希望能够闯进一个稳定的市场。幸运的是,他们的妻子都有工作并且愿意为她们的丈夫提供支持。在这两年里,Haavard和Eirik人为,他们需要继续开发产品并且从中赚的收益。之所以选择字母“Q”作为类的前缀,是因为该字母在Haavard和Eirik字体中看起来非常漂亮。随后添加的字母“t”代表工具包“Toolkit”,这是从“Xt”——一个X工具包的命名方式中获得的灵感。公司于1994年3月4日成立。最初的名字还是“Quasar Thechnologies”,随后更名为“Troll Tech”,而公司今天的名字则是“Trolltech”。

  1995年4月,通过Haavard就读过的大学的一位教授的联系,挪威的Metis公司与他们签订了一份基于Qt进行软件开发的合同。大约在同一时间,公司雇用了Amt Gulbrandsen,在公司工作的六年时间里,他设计并实现了一套独具特色的文档系统,并且对Qt的代码也做了不少贡献。

  1995年5月20日,Qt0.9被上传到sunsite.unc.edu。6天后,在comp.os.linux.announce上发布。这是Qt第一个公开发行的版本。Qt既可以在Windows上的程序开发,又可以用于UNIX上的程序开发,而且在这两种平台上,都提供了相同的应用程序编程接口。从第一天起,Qt就提供了两个版本的软件许可协议版本。一个是进行商业开发所需要的商业版本,一个是适用于开源开发的自由软件许可版本。Metis的合同确保了公司的发展,然而,在长达十个月的时间内,在没有任何人购买Qt的商业许可协议。

  1996年3月,欧洲航天局(European Space Agency)购买了10分Qt的商用许可协议,他成了第二个Qt用户。凭着坚定的信念,EEirik和Haavard有雇佣了另外一名开发人员。Qt 0.97在同年5月底正式发布,随后在1996年9月24日,Qt1.0正式面世。到了这一年的年底,Qt的版本已经发展到了1.1.共有来自8个国家的客户买了18分商用许可协议。也就是在这一年,在Matthias Ettrich的带领下,创立了KDE项目。Qt 1.2于1997年4月发布。Matthias Ettrich利用Qt建立KDE的决定,使Qt成为Linux环境下开发C++图像用户界面的事实标准。Qt1.3于1997年9月发布。Matthias Ettrich在1998年加入公司,并且在当年9月,发布了Qt 1系列的最后一个版本——V1.40.199年6月,Qt 2.0发布,该版本有有一个新的开源许可协议——Q公共许可协议(QPL,Q Public License),他与开源的定义一直。1999年8月,Qt赢得了LinuxWorld的最佳奖/工具奖。大约在这个时候,Trolltech Pty Ltd成立了。

  2000年,公司发布了Qt/Embedded Linux,它用于Linux嵌入式设备。Qt/Embedded Linux提供了自己的窗口系统,并且可以作为X11的轻量级替代产品。现在,Qt/X11和Qt/Embedded Linux 除了提供商业许可协议之外,还提供了广为使用的GNU通用公共许可协议(GPL,General Public License)。2000年底,成立了Trolltech Inc,并发布了Qtopia的第一版,他是一个用于移动电话和掌上电脑的环境平台。Qt/Embedded Linux在2001年和2002年两次获得了Linux World的“Best Embedded Linux Solution”奖,Qtopia Phone也是在2004年获得了同样的荣誉。

  2001年,Qt 3.0发布。现在,Qt已经可用于Windows、MacOS、NUIX、和Linux(桌面和嵌入式)平台。Qt 3 提供了42个新类和超过500000行代码。Qt3是自Qt2以来前进历程中最为重要的一步,他在诸多方面上都进行了改良,包括本地化和统一字符编码标准的支持、全新的文本查看和编辑窗口部件,以及一个类似于Perl正则表达式的类等。2002年,Qt3赢得了Software Develpment Times 的“Jolt Productivity Award”。

  2005年夏,Qt 4.0发布,他大约有500个类和9000多个函数,Qt4.0比以往的任何一个版本的都要全面和丰富,并且他已经裂变成多个函数库,从而是开发人员可以根据自己的需要只连接需要的Qt部分。相对于以前的Qt版本,Qt4 的进步是巨大的,他不仅彻底的对高效易用的模板容器、高级的模型/视图功能、快速而灵活的二维绘图框架和强大的统一字符编码标准的文本查看和编辑类进行了大量的改进,更不必说对那些贯穿整个Qt类中的成千上万个小的改良。现如今Qt已经超越了作为图形用户界面工具包的界限,逐渐成长为一个成熟的应用程序开发框架。Qt4 也是第一个能够在其所有可支持的平台上既可以用于商业开发又可以用于开源开发的Qt版本。同在2005年,公司在北京开设了一家办事处,以便于中国及其销售区域内的用户提供服务和培训,并且为Qt/EmdeddedLinux 和 Qtopia提供技术支持。通过获取一些非官方的语言绑定件(language bindings),非C++程序员也可以使用Qt,特别适用于Python程序员的PyQt语言绑定件。2007年,公司也发布了用于C#程序员的非官方语言绑定键Qyoto。同一年,QtJambi投放市场,他的一个官方支持的Java版本Qt应用程序编程接口。自奇趣科技公司诞生以来,Qt的声望经久不衰,而且至今依旧持续高涨。取得这样的城进不进说明了Qt的质量,而且也说明人们都非常喜欢应用它。在过去的十年中,Qt已经从一个只被少数专业人士所熟悉的“秘密”产品,发展到了如今遍及全世界拥有数以千计的客户以及数以万计的开源开发人员的产品

三、为什么选择Qt

  1、Qt是基于 C++ 的一种语言扩展(Extention)

    C/C++ 目前还是一种很多人都在学习的语言. Qt的好处就在于Qt本身可以被称作是一种 C++ 的延伸。Qt 的类都是用 C++ 写出来的。这也就是说, Qt 本身已经继承了C++的快速、简易、面向对象等许多的优点。

  2、Qt 具有非常好的可移植性(Portable)

    Qt不只是可以在 Linux 中运行,也同样可以运行在 Microsoft Windows 、Mac OS X等多种不同的平台中。这也意味者,利用 Qt编写出来的应用程序,在几乎不用修改的情况下,就可以同时在多种平台中运行。 Qt的应用非常之广泛,从 Linux到 Windows ,从 x86 到 Embedded 等都有大量Qt应用的成功范例。

  3、Qt支持跨平台构建(Cross-Platform Builds)

    编写用于多平台的软件是单调乏味的,且可能随时出现错误。维护编制文件更是如此,尤其是当不同的编译器和平台组合需要若干个编制文件时。通过qmake工具,Qt能够很好地面对这一挑战。这个工具可以为目标平台生成准确无误的编制文件。

  4、Qt是开源软件(Open Source)

    Qt产品提供的是采用双重授权的软件许可模式。在该双重授权模式下,Qt产品不仅可在获得商业许可下针对专利软件开发,而且还可以在GPL(通用公共许可证,版本2或版本3)下用于开发免费和开源软件。

  5、Qt架构健壮,性能强大(powerful)

    Qt 已由成千上万商业与开放源应用程序员,在多个操作系统与编译器上进行了测试,奠定了高性能应用程序的基础。

    此外,Qt运行时无需依赖“虚拟器”,模拟层或大容量的运行时间环境。它如本地化的应用程序一样,能够直接写入低级的图形函数,因而使用Qt开发的应用程序能以源代码速度执行。

  6、Qt使用起来简便高效(concise)

    Qt统一的跨平台API 让程序员们集中精力致力于可增值的技术革新,而无须担心维护和管理现有应用程序多版本的基础结构与界面。 因此Qt开发人员仅需要学会一种API来写入应用程序,该程序便可在任何地方运行。

    Qt Software投入了相当大的努力使得Qt使用起来尽可能简单和直观。来自世界各地的客户反馈普遍认为Qt编程简单而有趣;而对于商务应用而言,Qt可以转换为更多的功能,并且在保持质量性能的情况下,只需更少的维护工作。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Karen110 Karen110
2年前
一文带你读懂PyQt:用Python做出与C++一样的GUI界面应用程序
\一、简介Python标准库更多的适合处理后台任务,唯一的图形库tkinter使用起来很不方便,所以后来出现了针对Python图形界面开发的扩展库,今天老猿要介绍的是主流Python图形界面扩展库之一的PyQt。在介绍PyQt之前,必须先简单介绍一下Qt。Qt是一个C可视化开发平台,是一个跨平台的C图形用户界面应用程序框架(CGUI)
Stella981 Stella981
2年前
Qt类库介绍
QT类库QT核心特点QT是一个跨平台开发的类库。QT的元对象编译器MOC是一个预处理器,在源程序被编译前先将这些QT特性的程序转为标准的C兼容的形式,然后再有标准的C编译器进行编译。也就是为什么在使用信号和槽的机制的类里,必须添加一个Q\_OBJECT宏的原因,只有添加了这个宏,moc才能对类里的信号与槽代码进
Stella981 Stella981
2年前
Nokia Qt SDK的开发环境的搭建
Qt是一个跨平台的C图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。QT完全面向对象的,很容易扩展,并且允许正确的组建编程。Qt软件开发工具包(QtSDK)全新的Qt软件开发工具包,可从http://forum.nokia.com(https://www.oschina.n
贾蓁 贾蓁
1个月前
明仕强 Qt高级开发视频
download》http://quangneng.com/4329/什么是Qt高级开发Qt高级开发是指使用Qt框架进行的高级应用程序开发,通常涉及到更复杂的界面设计、多线程、网络编程、数据库访问等高级技术。Qt是一个跨平台的应用程序开发框架,它提供了一套
金旋 金旋
1个月前
51cto明仕强Qt高级开发视频教程
//下仔のke:https://yeziit.cn/14763/Qt是一个跨平台的C图形用户界面应用程序开发框架。在Qt的高级应用中,主要涉及到一些高级特性和技术,包括但不限于以下几个方面:自定义控件和绘图:Qt提供了强大的自定义控件和绘图功能,允许开
秦朗 秦朗
3星期前
孙老师Qt开发教程
//下仔のke:https://yeziit.cn/13455/Qt开发是指使用Qt这个跨平台的C图形用户界面应用程序框架进行软件开发的过程。Qt提供了一套丰富的类库和工具,使得开发者可以轻松地创建出具有艺术级图形用户界面的应用程序,同时也可以开发出非