关于Qt

简介:

什么是Qt

Qt是一个针对桌面、嵌入式、移动设备的一个跨平台的应用程序开发框架,支持的平台包括Linux、OS X、Windows、VxWorks、QNX、Android、iOS、BlackBerry(黑莓)、Sailfish OS(旗鱼操作系统)等。

Qt 1991年由Trolltech-奇趣科技(成立于1994年)开发,2008年,Trolltech被Nokia收购,2012年,Qt被Digia收购。

Qt是基于C++编写的框架,它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。预处理器,MOC(全称:Meta-Object Compiler-元对象编译器)用于扩展C++,如:信号和槽的特性。在编译之前,先使用MOC分析Qt扩展的C++源文件(检测是否包含Q_OBJECT宏),然后生成符合C++标准的源文件(新文件名将会由moc_加上原文件名构成)。因此框架本身和应用程序/库使用它能被任何符合标准C++的编译器(像Clang、GCC、 ICC、MinGW 和MSVC)所编译。

发展史

Qt的第一个商业版本于1995年推出,随后Qt的发展就很快了,下面是Qt发展史上的一 些里程碑,从之前的Qt1.x开始到现在的Qt5.x。

Qt1-3

版本 发布日期
1.40 10 July 1998
1.41 2 October 1998
1.42 19 December 1998
1.44 13 March 1999
2.0 26 June 1999
2.1 13 April 2000
2.2 7 December 2000
2.3 8 March 2001
3.0 16 October 2001
3.1 14 November 2001
3.2 24 July 2003
3.3 5 February 2004

Qt4

Trolltech在2005年6月28发布了Qt4.0,介绍了框架的五个新技术:

  1. 一套模板容器类
  2. 为item views提供了一套模型 - 视图 - 控制器体系结构
  3. 二维绘图框架
  4. 为低级文本布局提供了Unicode文本渲染器的公共API
  5. 基于Action的MainWindow,包括:工具栏,菜单和停靠体系
版本 发布日期 新特性
4.1 20 December 2005 推出集成SVG微小的支持,一个PDF的后端Qt打印系统,以及其他一些功能。
4.2 4 October 2006 介绍了Windows Vista的支持,部件的CSS样式支持,以及QGraphicsView框架-在屏幕上高效渲染成千上万个2D对象,以取代Qt3.x中的QCanvas类。
4.3 30 May 2007 改进了Windows Vista支持,改进了OpenGL引擎、SVG文件的生成,增加了QtScript(基于QSA的ECMAScript脚本引擎)。
4.4 6 May 2008 特性包含了改进multimedia的支持(使用Phonon),增强XML支持,集中共享内存的IPC框架,以及WebKit集成。
4.5 3 March 2009 主要包括功能有QtCreator,改进图形引擎,WebKit的集成,OpenDocument格式写入支持和新的许可选项,以及OS X Cocoa框架的支持。
4.6 1 December 2009 新的API框架-动画、手势、多点触控。支持Symbian、Windows 7和Mac OS X 10.6,支持扩展一些Unix系统。也取得了整体性能的改进。
4.7 21 September 2010 QML 和 Qt Quick
4.8 15 December 2011 Qt的平台抽象化,支持单线程OpenGL,多线程HTTP,优化了文件系统访问。

Qt5

Qt5于2012年12月19正式发布,这个新版本标志着平台的重大变化,硬件加速的显卡,QML和JavaScript发挥了重要作用。传统的C++ - 仅QWidgets继续得到支持,但没有从新体系结构的性能改进中受益,Qt5带来了速度及用户界面上的显著改进,Qt5开发框架移动至qt-project.org。外部开发者可以为Digia公司提交补丁,并让他们审查。

版本 发布日期 新特性
5.0 19 December 2012 对Qt4.x进行一系列重大改革。完成Wayland的支持。
5.1 3 July 2013 新模块以及Android和iOS实验性的支持技术预览。
5.2 12 December 2013 第一个官方支持Android和iOS的版本。
5.3 20 May 2014 集中于稳定性和可用性
5.4 10 December 2014 完整的WinRT和Windows Phone支持。介绍基于Chromium的Qt WebEngine内部组件,将在未来的版本中取代QtWebKit。动态的GL图形切换在Windows(ANGLE或OpenGL)后台,本地化的“外观和感觉”在QtQuick的控制在Android平台的后端,引入Qt WebChannels提供QObject到WebSockets的桥梁。最初仅使用Qt WebKit的集成,但还正在5.5下进行Qt WebEngine集成
5.5 1 July 2015 Qt5.5根据官方网站提供的功能:新模块: Qt 3D、Qt Canvas 3D、Qt Location。过时的模块的:Qt WebKit、Qt Declarative (Qt Quick 1)、Qt Script。蓝牙API的最终版本,新的视频过滤框架,Camera和QML MediaPlayer改善iOS,适用于Linux的NFC,SSL/TLS改进Qt Network
5.6 Alpha release: 8 September 2015 Final release plan: 8 December 2015 值得注意的改进:Qt Core:一些性能改进,包括减少动态性能的内存使用情况和性能最佳化的QString Qt Network:支持HTTP重定向 Qt GUI:改进了跨平台的OpenGL ES3.0和3.1 Qt Multimedia:添加QML类型播放列表 Qt WebEngine:基于Chromium 45,自定义URL方案的API,拦截和阻止网络请求,并跟踪或阻止Cookie QtQML:减少内存消耗 嵌入式平台:支持Intel Atom-based NUCs 过时的模块:Qt Script、Qt Enginio 已删除模块:Qt WebKit, Qt Declarative (Qt Quick 1)

平台支持

Qt支持下述平台:

  1. MS/Windows - 95、98、NT4.0、ME、2000、XP 、Vista、Win7、win8、win2008、win10
  2. Unix/X11-Linux、SunSolaris、HP-UX、CompaqTru64 UNIX、IBMAIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台
  3. Macintosh -Mac OS X
  4. Embedded - 有帧缓冲(framebuffer)支持的嵌入式Linux平台,Windows CE
  5. Symbian、Symbian^3、Symbian Anna、Symbian Belle、MeeGo

优点

Qt同X Window上的 Motif、Openwin、GTK 等图形界面库和 Windows平台上的 MFC、OWL、VCL、ATL是同类型的东西,但是 Qt 具有下列优点:

  • 优良的跨平台特性:
    Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。

  • 面向对象
    Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。

  • 丰富的 API
    Qt包括多达250个以上的C++类,还替供基于模板的collections、serialization、 file、I/O device、 directory management、date/time 类。甚至还包括正则表达式的处理功能。

  • 支持 2D/3D 图形渲染,支持 OpenGL

  • 大量的开发文档

  • XML 支持

Qt Creator

简介

在发布 Qt 4.6 的同时,作为 Qt 开发跨平台 IDE 的Qt Creator也发布了更新版本。Qt Creator 1.3 和 Qt 4.6共同构成的 Qt SDK,包含了开发跨平台应用程序所需的全部功能。

Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境 (IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。即使不开发Qt应用程序,Qt Creator也是一个简单易用且功能强大的IDE。

Qt Creator 包括项目生成向导、高级的 C++ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、图形化的 GDB 调试前端,集成 qmake 构建工具等。

功能和优势

QtCreator 主要是为了帮助新 Qt 用户更快速入门并运行项目,还可提高有经验的 Qt 开发人员的工作效率。

  • 使用强大的 C++ 代码编辑器可快速编写代码

语法标识和代码完成功能输入时进行静态代码检验以及提示样式上下文相关的帮助代码折叠括号匹配和括号选择模式高级编辑功能

  • 使用浏览工具管理源代码

集成了领先的版本控制软件,包括 Git、Perforce 和 Subversion开放式文件,无须知晓确切的名称或位置搜索类和文件跨不同位置或文件沿用符号在头文件和源文件,或在声明和定义之间切换

  • 为Qt跨平台开发人员的需求而量身定制

集成了特定于 Qt 的功能,如信号与槽 (Signals & Slots)图示调试器, 对 Qt 类结构可一目了然集成了 Qt Designer 可视化布局和格式构建器只需单击一下就可生成和运行 Qt 项目

Qt Designer

Qt Designer被称为Qt设计师,用于设计和构建图形用户界面(Qt Widgets)。你可以组合和自定义窗口或对话框(所见即所得),并使用不同的风格和分辨率进行测试。用Qt Designer创建的窗口部件和表格无缝集成编程代码,采用Qt信号和槽机制,这样就可以轻松地分配图形元素的行为。在Qt设计师中设置的所有属性可以动态地在代码中进行更改。此外,类似插件推广和自定义插件功能,可以使用自己的组件来使用Qt Designer。

注意:你也可以选择使用Qt Quick来设计用户界面,而不是Qt Widgets。这样更容易写各种各样的应用。它可以完全定制外观,触摸反应的元素,流畅的动画过渡,支持OpenGL图形加速功能。如果刚接触Qt Designer,可以看看Qt设计师文档。有关如何使用Qt设计师,请参阅Qt设计师快速入门。

Qt Linguist

简介

Qt Linguist被称为Qt语言家。主要任务是读取翻译文件、为翻译人员提供友好的翻译界面,是用于界面国际化的重要工具。它能帮助你很容易读懂C++语言。

使用方式

lupdate可以把.h、.cpp、.ui中需要翻译的字符串提取出来形成.ts文件,然后用linguist翻译。用lerealse生成.qm。

翻译一个含有tr()调用的Qt应用程序需要以下三步:
1. 运行ludate,从应用程序的源代码中提取所有用户可见的字符串。
2. 使用Qt Linguist翻译该应用程序。
3. 运行lrelease,生成二进制.qm文件,应用程序可以使用QTranslator加载这个文件。
如果开发工程中出现翻译改动,可以多次执行此过程!

Qt Assistant

Qt Assistant被称为Qt助手,是Qt自带的一款可定制、可重新发行的帮助文件浏览器。它支持HTML文件,用户可以利用其定制自己的功能强大的帮助文档浏览器。

相关文章
|
Linux 调度 数据安全/隐私保护
Qt之QFtp
简述 QFtp 类提供了一个 FTP 协议的客户端实现。 该类提供了一个到 FTP 的直接接口,允许对请求有更多的控制。但是,对于新的应用程序,建议使用 QNetworkAccessManager 和 QNetworkReply,因为这些类拥有一个更简单、还更强大的 API。 简述 QFtp 工作流程 基本使用 连接并登录 FTP 服务器 切换工作目录 列出目
7141 1
|
4月前
|
安全 C++
Qt moveToThread
Qt moveToThread
42 0
|
7月前
【Qt】- QMainWindwo
【Qt】- QMainWindwo
|
存储
Qt之QLCDNumber
Qt之QLCDNumber
373 0
|
网络协议 Java PHP
Qt之QImageReader
简述 QImageReader类为从文件或设备读取图像提供了一个独立的接口。 读取图像最常用的方法是通过构造QImage和QPixmap,或通过调用QImage::load()和QPixmap::load()。QImageReader是一个专业读取图像的类,可以有更多的控制,例如,可以通过调用setScaledSize()读取图像成特定的大小,通过调用setClipRec
2618 0
|
Linux Android开发 C++
Qt资料大全
简述 发福利了、发福利了、发福利了,重要的事情说三遍。。。 为了方便更多Qter了解、学习Qt,现将相关资源进行整理,主要内容包括:Qt官网、编码风格、GitHub & Third-Party、社区论坛、博客、书籍等。 满满的都是干货,独乐乐不如众乐乐。。。 简述 Qt官网 编码风格 GitHub Third-Party 社区论坛 博客 书籍 更多
2914 0
Qt之QSpinBox和QDoubleSpinBox
简述 QSpinBox和QDoubleSpinBox均派生自QAbstractSpinBox。 QSpinBox旨在处理整数和离散值(例如:月份名称),QDoubleSpinBox则用于处理浮点值。他们之间的区别就是处理数据的类型不同,其他功能都基本相同。 QDoubleSpinBox的默认的精度是2位小数,但可以通过setDecimals()来改变。 下面主要以QS
2007 0
|
网络协议
Qt之QHostAddress
简述 QHostAddress类提供一个IP地址。 这个类提供一种独立于平台和协议的方式来保存IPv4和IPv6地址。 QHostAddress通常与QTcpSocket、QTcpServer、QUdpSocket一起使用,来连接到主机或建立一个服务器。 可以通过setAddress()来设置一个主机地址,使用toIPv4Address()、toIPv6Address
3611 0