不会有人不知道QT的历史吧
1.什么是QT:
Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。
Qt 是纯 C++ 开发的,所以学好 C++ 非常有必要,Qt 还存在 Python、Ruby、Perl 等脚本语言的绑定, 也就是说可以使用脚本语言开发基于 Qt 的程序。开源社区就是这样,好东西就会被派生扩展,到处使用, 越来越壮大。
Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智能手机系统 Android、iOS、WinPhone, 嵌入式系统 QNX、VxWorks 等等。
2.QT能做什么:
Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。
Qt 是应用程序开发的一站式解决方案,有了 Qt,你就可以高枕无忧了!Qt 本身包含的模块也日益丰富, 一直有新模块和第三方模块加入进来。
大部分应用程序都可以使用 Qt 实现,除了与计算机底层结合特别紧密的,例如驱动开发,它直接使用硬件提供的编程接口,而不能使用操作系统自带的函数库。
1997年,Qt 被用来开发 Linux 桌面环境 KDE,大获成功,使 Qt 成为 Linux 环境下开发 C++ GUI 程序的事实标准。
下面的程序都使用 Qt 开发:WPS、YY语音、Skype、豆瓣电台、虾米音乐、淘宝助理、千牛、暴雪的战网客户端、VirtualBox、Opera、咪咕音乐、Google地图、Adobe Photoshop Album 等。
Linux 也是嵌入式的主力军,广泛应用于消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等相关行业。
Qt 虽然也支持手机操作系统,但是由于 Android 本身已经有 Java 和 Kotlin,iOS 本身已经有 Objective-C 和 Swift,所以 Qt 在移动端的市场份额几乎可以忽略。
总起来说,Qt 主要用于桌面程序开发和嵌入式开发。
3.Qt 的历史:
说到 Qt 的发展史,那真是一波三折,几经卖身。
Qt 最早是 1991 年由挪威的 Eirik Chambe-Eng 和 Haavard Nord 开发的, 他们随后于 1994 年 3 月 4 号正式成立奇趣科技公司(Trolltech)。Qt 原本是商业授权的跨平台开发库, 在 2000 年奇趣科技公司为开源社区发布了遵循 GPL(GNU General Public License)许可证的开源版本。
在 2008 年,诺基亚公司收购了奇趣科技公司,并增加了 LGPL(GNU Lesser General Public License)的授权模式。诺基亚联合英特尔利用 Qt 开发了全新的智能手机系统 MeeGo,可惜遭遇了微软木马屠城,诺基亚被迫放弃了 MeeGo, 而 Qt 商业授权业务也于 2011 年 3 月出售给了芬兰 IT 服务公司 Digia。
4.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 都发展壮大起来,都做得越来越好了。
5.GPL和LGPL:
除了商业授权,目前 Qt 的开源授权有两种,一种是 GPL 授权,另一种是 LGPL 授权(诺基亚收购后新增)。
对这两种开源授权,简单来说,使用 GPL 版本的软件一定还是 GPL 的开源软件,无论是使用了 Qt 的程序代码还是修改了 Qt 库代码,都必须按照 GPL 来发布,这是 GPL 的传染性。
GPL 是什么都要开源,这对商业软件应用是不利的,所以诺基亚增加了 LGPL 授权 (第一个 L 可以叫 Lesser 宽松版或 Library 开发库版)。使用 LGPL 授权就可以利用 Qt 官方动态链接库,而不必开放商业代码。只要不修改和定制 Qt 库,仅使用 Qt 官方发布的动态链接库就可以不开源,这是商业友好的授权模式。
其实只要不是做商业,就不太需要关注用什么授权,以 GPL 授权发布程序代码就可以了。
6.如何选择开源协议呢:
世界上的开源协议有上百种,很少有人能彻底搞清它们之间的区别,即使在最流行的六种开源协议——GPL、BSD、MIT、Mozilla、Apache 和 LGPL——之中做选择,也很复杂。
乌克兰程序员 Paul Bagwell 画了一张分析图,说明应该怎么选择开源协议,大家看了一目了然,真是清爽。
最后请参考qt官网;
2.为啥要用QT:
用 Qt 来开发 Windows 桌面程序有以下优点:
- 简单易学:Qt 封装的很好,几行代码就可以开发出一个简单的客户端,不需要了解 Windows API。
- 资料丰富:资料丰富能够成倍降低学习成本,否则你只能去看源码,关于 DirectUI、Htmlayout、aardio 的资料就很少。
- 漂亮的界面:Qt 很容易做出漂亮的界面和炫酷的动画,而 MFC、WTL、wxWidgets 比较麻烦。
- 独立安装:Qt 程序最终会编译为本地代码,不需要其他库的支撑,而 Java 要安装虚拟机,C# 要安装 .NET Framework。
- 跨平台:如果你的程序需要运行在多个平台下,同时又希望降低开发成本,Qt 几乎是必备的。
QT和MFC:
读者经常将 MFC 和 Qt 进行对比,MFC 只能应用在 Windows 平台,而 Qt 是跨平台的,一次编写,到处运行。
另外,Qt 已经封装了底层细节,学习 Qt 将会非常简单;而 MFC 只是给 Windows API 加了一层包装,不了解 Windows API 也学不好 MFC,大家普遍反映 MFC 难学。
我们不能简单地说 Qt 好还是 MFC 好,两者都有用武之地;但是初学者学习 Qt 会比较简单,不用应付那些烦人的 Windows API,很快就能开发出带有漂亮界面的应用程序
3.Qt Creator:
Qt Creator是跨平台的 Qt IDE, Qt Creator 是 Qt 被 Nokia收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。
使用QtCreator创建的项目目录中不能包含中文和空格)(切记不然会出现莫名其妙的错误)
QtCreator默认使用Utf8格式编码对文件字符进行编码
为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。GB2312 支持的汉字太少,1995年的汉字扩展规范GBK1.0,支持了更多的汉字。2000年的 GB18030取代了GBK1.0成为了正式的国家标准。Unicode 也是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。
修改Qt Creator文件编码:菜单栏->工具->选项->文本编辑器->行为->文件编码
主界面:
左边第一个是欢迎界面;
下面是文本编辑器;
然后是可视化窗口编辑界面(设计窗口编辑界面);
然后是调试界面;
然后是项目属性设置界面;
然后是查阅文档的界面;
左下角的分别是:
设置调试模式:release和debug;
然后是运行模式:
然后是程序调试:
然后是项目构建:(编译);
右上角的是:
new是新建项目;
open是打开已有项目;
后面是创建项目:
这里要选择模板:Application
填写项目名称和路径(切记不能有中文和空格)
选择编译系统选择qmake即可
然后选择窗口类信息:
第一个是窗口类名; 第二个是父类;
第三个是头文件;
第四个便是源文件;
还有注意的是ui文件;
然后默认;
套件特别重要:
我们选择的mingw套件;
不显示套件的话是安装的时候没有选;
主函数:main.cpp:
#include<Application>(类程序的头文件)
#included"widget"(是你自己创建的头文件)
int main(int argc,char *argv[]){QApplication a(argc,argv);//应用程序的对象,有且只有一个;
widget w;//定义一个类的对象
w.show();//显示窗口(不加这个widget它不会显示出来)return a.exec();//这个特别终于因为这个是消息循环}
我们自定义的头文件:
#ifndef WIDGET_H//防止头文件重复包含
#define WIDGET_H
#include<Qwidget>//自己定义类的父类头文件
我们这边是讲解没有ui文件的后期将会讲到ui文件
class Widget:publice Qwidget
{ Q_OBJECT//信号与槽的必须品
public:
Widget(QWidget *parent=nullptr);//构造函数
~Widget();//析构函数}
#endif
我们的源文件少不了:
#include"widget"//头文件Widget::Widget(Qwidget *parent):Qwidget(parent)
{}
Widget::~Widget(){}
*.pro文件:这是Qt的项目文件注释是#
#项目编译时需要加载哪些模块
QT +=core gui#编译时要加的模块CONFIG +=c++11#QT支持的c++版本DEFINES += QT_DEPRECATED_WARNINGS#这是低版本的函数给出警告SOURCES += \main.cpp \widget.cpp#源文件的包含
HEADERS += \widget.h
#相应的头文件包含
#部署的默认规则
qnx: target.path = /tmp/$${TARGET}/bin #嵌入式
else: unix:!android: target.path = /opt/$${TARGET}/bin #unix
!isEmpty(target.path): INSTALLS += target
#我也不是搞嵌入式的不太清楚
快捷键:
常用快捷键
运行 Ctrl + r
编译 Ctrl + b
注释 Ctrl + /
字体缩放 Ctrl + 鼠标滚轮
查找/替换 Ctrl + f
整行移动 Ctrl + Shift + ↑ 或 ↓
自动对齐 Ctrl + i
帮助文档
第一种:Qt Creator 直接查看 F1
第二种:打开独立的帮助文档程序 assistant
同名.h 和 .cpp 之间的切换 F4
快速添加函数的定义 Alt + Enter
鼠标移动到函数申明上
修改变量名,并应用到所有用到该变量的地方 Ctrl + Shift +r
快速打开输出窗口 Alt + 数字键(1-8)
书签功能,即在某行代码处进行标记,方便以后找到。书签也可以添加文字注。
按Ctrl + M 添加/删除书签
按Ctrl + . 查找并移动到下一个标签
主题配置:菜单栏->工具->选项->文本编辑器
上面是选择系统自带的,当然也可以自己配置一个
比如xml文件
Visual studio white(Qt creator代码样式).xml
把该文件复制到Qt的安装目录下的->Qt\Qt5.14.2\Tools\QtCreator\share\qtcreator\styles目录中
最后进入文本编辑器选择
不会有人不知道QT的历史吧相关推荐
- GIT 这么好用,为什么还是有人不知道怎么用它提交代码?
客户端代码管理工具的变迁: 从 SVN 到 GIT 截止目前,新版的 APICloud Studio 2 仍然处于公测期.APICloud Studio 2 的代码管理客户端,由 SVN 改为了 GI ...
- Qt图形界面编程入门(Qt的历史、Qt安装资源链接、Qt Creator简介)
Qt的历史渊源 Qt是1991年由挪威的奇趣科技(Trolltech)公司开发的跨平台C++图形用户界面(GUI)用程序开发框架,2008年,奇趣科技公司被诺基亚公可收购,Qt也因此成为诺基亚公司旗下 ...
- 【Qt】Qt发展历史
00. 目录 文章目录 00. 目录 01. Qt是什么 02. Qt的历史 03. Qt和KDE 04. Qt和智能手机 05. Qt历史发展 06. 附录 01. Qt是什么 Qt是跨平台的开发库 ...
- 不是吧,win10 自带的表情包这么可爱,不会有人不知道?
不是吧,win10 自带的表情包这么可爱,不会有人不知道? win10这些表情共有 1007 个,格式为 bmp,IT 之家把这些动图中的表情提取出来,小编打包上传到网盘,有需要的用户可以下载使用.下 ...
- Qt发展历史及其特点简介
Qt 是一个跨平台的C++应用程序框架,支持Windows.Linux.Mac OS X.Android.iOS.Windows Phone.嵌入式系统等.也就是说,Qt 可以同时支持桌面应用程序开发 ...
- 期货开仓篇1:唐奇安通道开仓法,有人不知道,有人用不好
先瞄准再开枪,先定势再开仓,行情诡谲多变,开仓时机稍纵即逝,问题是市面上那么多开仓方法,如何选择适合自己的开仓点是很多人头疼的问题.其实哪种开仓方法都能赚钱,就看你有没有悟性,能否触类旁通,一通百通, ...
- 已经2022年了为什么还是有人不知道网上投稿发新闻的方法?
人生天地之间,若白驹过隙,忽然而已.转眼间2021年就剩下不到半个月的时间,马上即将跨入2022年.所有的喜悦.悲伤.过往.经历都将随着2021年尘封入史册.互联网让2021年有了更多精彩,也改变了我 ...
- 不会吧,不会吧,全网最细汉诺塔讲解,不会有人不知道吧。面试官直呼内行,看完只想默默找水喝(C语言)
最干hanoi,看完直呼口干舌燥 Hanoi(汉诺塔问题) 一.什么是汉诺塔 二.分析 1.移动过程 2.应用思想+函数雏形 3.部分代码 三.总代码 四.递归调用 OVER Hanoi(汉诺塔问题) ...
- Qt学习之路(2):Hello, world!
任何编程技术的学习第一课基本上都会是Hello, world!,我也不想故意打破这个惯例--照理说,应该首先回顾一下Qt的历史,不过即使不说这些也并无大碍. 或许有人总想知道,Qt这个单词是什么意思. ...
最新文章
- (原创)INTERVAL分区表与RANGE分区表相互转化
- iNeuOS工业互联网操作系统部署在华为欧拉(openEuler)国产系统
- 《Java8实战》笔记(07):并行数据处理与性能
- 编译器vs.代码 谁之过
- 用计算机怎样给文章分解,计算机试卷6分解..pdf
- pytorch-LSTM的输入和输出尺寸
- linux容器安装cmake
- 关于一些初级ACM竞赛题目的分析和题解(五)。
- 到底什么是模型预测控制MPC(一)
- 计算机网络asp视频教程,ASP.net动态网页制作视频教程
- bootstrop table api
- windows睡眠和休眠的区别
- html图像css设置大小,关于html:CSS显示调整大小和裁剪的图像
- 接入微信自定义版交易组件3.0,小程序对接视频号操作说明
- 动手学深度学习番外篇 01.为什么from d2l import torch as d2l
- 【解决方案】智慧国土管理靠什么?EasyCVR综合性视频监控管理系统成支撑
- Ubuntu 壁纸下载
- SLAM流程之视觉前端
- Unity 文字显示动画
- Markdown 图片自动上传
热门文章
- Oracle存储过程实现BOLL(布林线)计算
- 肾上腺髓质素 (12-20)|186027-43-0|KWNKWALSR-NH2
- 蓝精灵协会:如何将传统 IP 融入 Web3
- miui12.5安装证书/解决无法抓包的问题
- 针对LOGO的半透明图片的显示
- [QualityCenter]QC是什么?发展历程是怎样?
- 多玩我的世界盒子java异常_多玩我的世界盒子里为什么启动不了?
- 洛谷P2031 脑力达人之分割字串
- 在visual studio 2005中配置iup环境
- 计算ORACLE使用内存方法(on AIX)