Qt 简介

作者:billy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

Qt 是什么?

Qt官网是这么介绍Qt的:
Qt is a cross-platform application development framework for desktop, embedded and mobile. Supported Platforms include Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS and others.

Qt is not a programming language on its own. It is a framework written in C++. A preprocessor, the MOC (Meta-Object Compiler), is used to extend the C++ language with features like signals and slots. Before the compilation step, the MOC parses the source files written in Qt-extended C++ and generates standard compliant C++ sources from them. Thus the framework itself and applications/libraries using it can be compiled by any standard compliant C++ compiler like Clang, GCC, ICC, MinGW and MSVC.

Qt 是一个跨平台的 C++图形用户界面库,是一个针对桌面、嵌入式、移动设备的一个跨平台的应用程序开发框架,支持Linux、OS X、Windows、VxWorks、QNX、Android、iOS、BlackBerry、Sailfish OS等多个平台。

Qt本身不是一种编程语言,它是基于C++编写的框架。预处理器MOC(元对象编译器)用于扩展C ++语言,具有信号和插槽等功能。在编译步骤之前,MOC解析用Qt-extended C++编写的源文件,并从中生成符合标准的 C++源代码。因此,框架本身和使用它的应用程序/库可以由任何符合标准的 C++编译器(如Clang,GCC,ICC,MinGW和MSVC)编译。

Qt 可以做什么?

Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。

Qt 是应用程序开发的一站式解决方案,有了 Qt,你就可以高枕无忧了!Qt 本身包含的模块也日益丰富, 一直有新模块和第三方模块加入进来。 大部分应用程序都可以使用 Qt 实现,除了与计算机底层结合特别紧密的,例如驱动开发,它直接使用硬件提供的编程接口,而不能使用操作系统自带的函数库。

下面的程序都使用 Qt 开发:WPS、YY语音、Skype、豆瓣电台、虾米音乐、淘宝助理、千牛、暴雪的战网客户端、VirtualBox、Opera、咪咕音乐、Google地图、Adobe Photoshop Album 等。

Linux 也是嵌入式的主力军,广泛应用于消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等相关行业

Qt 虽然也支持手机操作系统,但是由于 Android 本身已经有 Java 和 Kotlin,iOS 本身已经有 Objective-C 和 Swift,所以 Qt 在移动端的市场份额几乎可以忽略。

总起来说,Qt 主要用于桌面程序开发和嵌入式开发

Qt 发展史

Qt 在1991年由挪威 TrollTech 公司开发,1994年 Qt Company 成立。
2008年 Trolltech 被 Nokia 收购。
2012年 Qt 被 芬兰IT服务公司 Digia 收购。

Qt的第一个商业版本于1995年推出,随后Qt进入高速发展阶段,不断发布新版本,从Qt 1.x到现在的 Qt 5.x
具体的历史发展时间线可参考 Qt 官网:Qt History
每一个版本发布时的新特性和所作的修改可参考:Release history

Qt 的优点

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 和 KDE

之前提到 Qt 原本是商业授权软件,是怎么开源的呢?这就涉及 Qt 和 KDE 的纠葛了。

KDE 是 Linux 操作系统的桌面环境,与 GNOME 桌面是类似的,作为开源桌面它们竞争的情况更为多见。KDE 是采用 GPL 许可证发布的开源软件,而最初 Qt 是商业授权的,存在商业侵权风险,GNOME 则是基于开源 GTK 库的,没有什么商业风险,这一度是 GNOME 优越于 KDE 的特性。

由于 Qt 的商业授权,KDE 社区一度混乱纠结,与此同时 GNOME 则如火如荼发展起来了。 KDE 毕竟算是亲儿子,被另一波人欺负,奇趣科技公司当然看不下去了,最后是奇趣科技公司为了赢得开发者的支持,为 Qt 增加了 GPL 的开源授权, 对于开源社区而言,遵循 GPL 使用 Qt 就不需要付费,这为 KDE 解决了燃眉之急。

之后 KDE 桌面和 GNOME 都发展壮大起来,都做得越来越好了。

GPL 和 LGPL

除了商业授权,目前 Qt 的开源授权有两种,一种是 GPL 授权,另一种是 LGPL 授权(诺基亚收购后新增)。

对这两种开源授权,简单来说,使用 GPL 版本的软件一定还是 GPL 的开源软件,无论是使用了 Qt 的程序代码还是修改了 Qt 库代码,都必须按照 GPL 来发布,这是 GPL 的传染性。

GPL 是什么都要开源,这对商业软件应用是不利的,所以诺基亚增加了 LGPL 授权 (第一个 L 可以叫 Lesser 宽松版或 Library 开发库版)。使用 LGPL 授权就可以利用 Qt 官方动态链接库,而不必开放商业代码。只要不修改和定制 Qt 库,仅使用 Qt 官方发布的动态链接库就可以不开源,这是商业友好的授权模式。

其实只要不是做商业,就不太需要关注用什么授权,以 GPL 授权发布程序代码就可以了。

Qt Creator

Qt Creator provides a cross-platform, complete integrated development environment (IDE) for application developers to create applications for multiple desktop, embedded, and mobile device platforms, such as Android and iOS. It is available for Linux, macOS and Windows operating systems.

Qt Creator 为应用程序开发人员提供了一个跨平台的完整集成开发环境(IDE),可为多个桌面,嵌入式和移动设备平台(如Android和iOS)创建应用程序。它适用于Linux,macOS和Windows操作系统。

Qt Creator 包括项目生成向导、高级的 C++ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、图形化的 GDB 调试前端,集成 qmake 构建工具等。可以帮助新用户更快速入门并运行项目,还可提高有经验的 Qt 开发人员的工作效率。

Qt Creator 的优点:

  • 使用强大的 C++ 代码编辑器可快速编写代码
  • 使用浏览工具管理源代码
  • 为Qt跨平台开发人员的需求而量身定制

Qt Designer

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

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 官网:https://www.qt.io
Qt 下载:http://download.qt.io/archive/qt
Qt 官方发布下载:http://download.qt.io/official_releases/qt
Qt WiKi:https://wiki.qt.io/Main_Page

Qt 论坛

CSDN Qt 论坛:http://bbs.csdn.net/forums/Qt
QTCN 开发网:http://www.qtcn.org
Qter 开源社区:http://www.qter.org
Qt-Centre: http://www.qtcentre.org
Qt-Apps:http://qt-apps.org
Qt Software:http://www.qtsoftware.com

Qt 博客

foruok: https://blog.csdn.net/foruok/article/category/418962
豆子:http://www.devbean.net
一去丶二三里:http://blog.csdn.net/liang19890820
彩阳:https://blog.csdn.net/gamesdev
Jason:http://blog.csdn.net/wsj18808050/article/category/2810223
小q:http://blog.csdn.net/qyvlik
billy:https://blog.csdn.net/qq_34139994

发布了61 篇原创文章 · 获赞 218 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_34139994/article/details/97630205