关于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,介绍了框架的五个新技术:
- 一套模板容器类
- 为item views提供了一套模型 - 视图 - 控制器体系结构
- 二维绘图框架
- 为低级文本布局提供了Unicode文本渲染器的公共API
- 基于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支持下述平台:
- MS/Windows - 95、98、NT4.0、ME、2000、XP 、Vista、Win7、win8、win2008、win10
- Unix/X11-Linux、SunSolaris、HP-UX、CompaqTru64 UNIX、IBMAIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台
- Macintosh -Mac OS X
- Embedded - 有帧缓冲(framebuffer)支持的嵌入式Linux平台,Windows CE
- 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文件,用户可以利用其定制自己的功能强大的帮助文档浏览器。
关于Qt的更多相关文章
- QT内省机制、自定义Model、数据库
本文将介绍自定义Model过程中数据库数据源的获取方法,我使用过以下三种方式获取数据库数据源: 创建 存储对应数据库所有字段的 结构体,将结构体置于容器中返回,然后根据索引值(QModelIndex) ...
- Ubuntu 下安装QT
Ubuntu 下安装QT 本文使用的环境 QT Library: qt-everywhere-opensource-src-4.7.4.tar.gz QT Creator: qt-creator-li ...
- Qt安装配置
Qt Creator: 下载: Qt 5.5.1 for Windows 32-bit(MinGW 4.9.2, 1.0 GB):http://download.qt.io/official_rele ...
- Qt信号与槽自动关联机制
参考链接1:http://blog.csdn.net/skyhawk452/article/details/6121407 参考链接2:http://blog.csdn.net/memory_exce ...
- 保持Qt GUI响应的几种方法
最开始使用Qt时就遇到过QT Gui失去响应的问题,我是用多线程的方式解决的,然而通常来说,多线程是会降低程序的运行速度. 之后,在使用QSqlQuery::execBatch()函数时,Qt Gui ...
- Qt 中使用Singleton模式需小心
在qt中,使用Singleton模式时一定要小心.因为Singleton模式中使用的是静态对象,静态对象是直到程序结束才被释放的,然而,一旦把该静态对象纳入了Qt的父子对象体系,就会导致不明确的行为. ...
- Qt——组件位置随窗口变化
当我们用Qt Designer设计界面时,有时会面临这样一个问题:需要在窗口指定位置放置组件,并且当窗口位置大小改变时,该组件相对其父对象的位置是不变的,如下面两幅图所示 ,首先看上面这幅图,注意bu ...
- (转) Qt 出现“undefined reference to `vtable for”原因总结
由于Qt本身实现的机制所限,我们在使用Qt制作某些软件程序的时候,会遇到各种各样这样那样的问题,而且很多是很难,或者根本找不到原因的,即使解决了问题,如果有人问你为什么,你只能回答--不知道. 今天我 ...
- qt中ui的 使用介绍
1.什么是ui?ui通常是用Qt 设计师设计出来的界面文件的后缀.通常情况下ui是一个指向这个界面类的指针.ui-> 一般就是用来访问这个界面类里面的控件.例如你的ui文件里有一个叫okButt ...
- Qt 开启鼠标跟踪,自动激活mouseMoveEvent的问题
最近在Qt上实现一个功能,鼠标在图片上移动,触发mouseMoveEvent事件,进而生成一个小的半透明窗口,放大显示以鼠标为中心的一个区域的图像并随鼠标移动.但是,必须鼠标摁下,才触发mouseMo ...
随机推荐
- 两台机器间libevent通信:No route to host问题
最近学习libevent库,遂在两台虚拟机间模拟通信,程序没逻辑错误,但客户端总是提示No route to host问题,想到可能是linux的防火墙问题导致的,于是关掉防火墙: Ubuntu系统防 ...
- spring 两个 properties
A模块和B模块都分别拥有自己的Spring XML配置,并分别拥有自己的配置文件: A模块 A模块的Spring配置文件如下: <?xml version="1.0" enc ...
- vim使用指北 ---- Advanced Editing
本节介绍vi和ex的一些高级功能. 配置vi 配置文件.exrc可以保存在你的主目录下,在vi启动的时候执行这个配置文件.但在当前工作目录下可以放置一个配置文件,对当前目录做一个自定义配置. :set ...
- 【基本算法】 KMP文本串模式串的字符串匹配算法
看了两个晚上的KMP,加上基本的“暴力匹配” 今晚看懂next[j]递归求解时,突然觉得算法真的好美妙,虽然觉悟的晚但晚胜过没有是吧! 我的博客都是应试性的学习笔记,不具备指导性,还是大神们写的好,例 ...
- Delphi的Socket编程步骤
ClientSocket 和ServerSocket几个重要的属性: 1.client和server都有port属性,需要一致才能互相通信 2.client有Address属性,使用时填写对方 ...
- Masonry自动布局
介绍,入门: http://www.cocoachina.com/ios/20141219/10702.html 下载: http://code.cocoachina.com/detail/30114 ...
- [STL]heap和priority_queue
一.heap 在STL中,priority_queue(优先权队列)的底层机制是最大堆,因此有必要先来了解一下heap.heap采用完全二叉树的结构,当然不是真正的binary tree,因为对于完全 ...
- RTMP/RTP/RTSP/RTCP的区别
RTCP RTMP/RTP/RTSP/RTCP的区别 http://blog.csdn.net/frankiewang008/article/details/7665547 流媒体协议介绍(rtp/r ...
- Hive常用的SQL命令操作
Hive提供了很多的函数,可以在命令行下show functions罗列所有的函数,你会发现这些函数名与mysql的很相近,绝大多数相同的,可通过describe function functionN ...
- iOS开发--CornerStone上传静态库(.a文件)
首先打开软件左上角 CornerStone-Preferences-SubVersion 第一个地方把对号去掉,第二个地方把.a那个删除,然后save. 然后把你的.a文件放到本地的相应文件夹下, 但 ...