原创【Qt教学,小白适用,从零开始】- 001 - Qt的简介,为什么用它和如何安装、配置

编者注:”前端、后端“本是网络开发的专门术语,不过我依样画葫芦把它们挪过去应用开发的领域里头,道理是一样的,前端搞得就是界面和Signals-Slots链接(以后你们关注这个教学就知道是什么了),后端就是搞与操作系统之间的互动,和所有编程逻辑。

Qt是什么

我们每天都在使用各式各样的电子产品。刷手机、划电脑,这些事情都稀疏平常。但是用家背后的是每天辛苦耕耘的码农,开发者不同种类的APP、软件,供人们使用。

众所周知,开发APP(不论是小规模还是大规模),都需要用到一工具,来大大的帮助开发过程和后端设置。这些工具的名字叫做API(Application Programming Interface,直译:应用程式开发界面)。API不仅扮演着应用程式和应用程式之间,互相交换数据、交流等作业的桥梁,更是一种可以供开发者(也有使用者)客制化 (Customization) 不同通讯、交流等规定的中间人。例如,API可以规定用某某编程语言来执行作业,也可强迫应用程序仅仅能提供某些特定的档案格式等等等等。

不同API有不同特定功能。例如某些工具就是专门设计给程序员开发前端应用的(后端、作业系统API自己搞定)。这些就叫住软件程式建造应用程式开发界面(Application Development Platform Applicational Programming Interface,简称AppDevAPI)。

市面上有无数多的API供开发者 (developers) 开发软件,如下列表(根据编程语言排列):

C++

  • Qt,本系列的主角,使用范围最广,历史、稳定性、开源性跟以下API也差不多
  • wxWidgets,Qt的主要竞争对手,不过慢慢甘拜下风(想知道为什么,请详阅下文并咬文嚼字)
  • Win32uwp(也被称作Win32-UWP或者Windows UWP),是仅限于Windows平台的一个(差点儿)被微软放弃的UI Builder(界面设计师及建造师)
  • GTK,Qt火起来之前,它一直由于其独特性(能与古旧电脑相容,当时寥寥可数的C++ 应用程序开发API)垄断整个C语言的GUI开发,并大受初阶、进阶电脑使用者和C++程序员支持和鼓舞,但是现在经常拖更、停更。更甚者,自从Qt 4.0开始发布后,其欢迎度和市场占有率就一直……

Python

  • PyQt,Qt的儿子(可以这么说吧),意即Qt在Python语言的绑定。几乎可以确认PyQt与Qt只剩下编程语言上的差别了,类别、枚举 (enumerations)、联盟 (unions, structs) 100%相同。笔者当时也用过PyQt,觉得好用,但是碍于Python的动态性,速度,笔者后来就慢慢放弃了。不过在网上看到代码,想用来测试一下Qt,也会偶尔用一下PyQt,避免使用C++的QMake,Build,Exec这么麻烦。
    PyQt采用C++-Python直接翻译法,使用sip直接按照上下文和评论 (comments, enclosed with /**/) 翻译Qt源代码
  • PySide,同上,PyQt近亲,不过类别上稍微有点不同,在许可证上也有稍微的不同(PyQt用GPL-3,PySide用LGPL-Anyversions),用shibokken作为C++-Python直接翻译器
    ※ 额外知识:Qt除了Python这个最大使用率的绑定之外,还有一些面向其他编程语言的一些比较不知名的绑定,例如Java的QtJambi,不过大多Java’er还是会选择使用Swing或者其他框架,因为看上去更加本地(native)。
  • Tkinter,最原生Python内建模组AppDevAPI。但是,简陋,破旧,10年没有更新过(至少一直停留在8.5-8.7之间,8.7好歹还是最近才推出的),简单,是缺胳膊少腿那样子的简单,强烈不推荐用。由它建造起来的PySimpleGui、CustomizeTkinter也不太推荐用。留意一下,Tkinter虽然表面上是Python的内建,不过它仍然是Tcl语言的旧绑定binding。Python技术上来看并没有100%纯Python语言建造的GUI框架,全部都是转换而成的。
  • PyGTK,GTK的近亲,跟他老子一样,拖更,停更,旧代码,……
  • wxPython,虽然是wxWidgets的绑定,不过控件相对于Qt(和它的子系列产品、绑定)更少,可自定、客制化性少很多。例如,我们Qt有以下代码来绘画一个子继承类别的控件QWidget
def paintEvent(self, event: QPaintEvent) -> None:
    """绘画一条线。从左上角开始,45°画一条15像素长的斜线"""
    painter = QPainter()
    painter.drawLine(QLine(0, 0,
                           15, 15)
    

至少笔者发现wxWidget没有相对应的覆盖方法 (overriding method),Qt比它更胜一筹。啊对了,上面代码只能看得懂def、None和self作为保留字的请举手,不过就算你双手举高也没问题,我们现在慢慢开始学Qt,到第15~20篇(大约)在讲事件处理 (Event handling) 你大概就应该可以看得懂了QPaintEventQPainterQLine之类的东西。

Java

笔者学了几Java就放弃了(笑)好在根据百度大神,还是有一些面相Java的AppDeveAPI供开发者使用。

  • Swing,最原生Java内建块。
  • AWT,Abstract Window Toolkit。
  • Apache Pivot,Apache的面向Java的GUI框架,不过跟上面儿一样,最近一次更新是五年前了(2017年),而且还是一次小更新(2.0.4→2.0.5),不值得使用。

选择语言

C++。一定是C++。

首先,它快呀。相比起直译式语言(最著名的例子就是Python),技术好的程序员、配置好的电脑加上被好好编程的代码可以使C++比Python、Ruby快了个100~200多倍左右。对于高质量、高品质、高速度要求的APP来讲,C++可是编程语言的首选。可不,整个公司-Adobe(对,就是你们拿来P图的Photoshop的原创公司)、开源软体界的KDE,全部(“立志”式地)APP都是用C++开发,其中KDE还是用Qt作为AppDevAPI的。详见章末列表。

其次,C++从1981年开始大红大紫,在40多年间积攒了浓厚的实力,论坛大、朋友圈宽。米国知名编程问答网站的C++问题数达到了792,797个,七十多万问题反映了C++的吸引力和知名度。

此外,Qt在它于Trolltech奇趣公司出生的时候就断言式地用C++开发一切服务,也就是说,Qt本身就是designed-for-cpp(给C++语言量身定做)的,增加了原创性。

另外,……

怕你们不信它的能力,我辛辛苦苦整了一张大表给各位看众:

使用C++开发的著名应用程式

  • Adobe Photoshop,P图神器
  • Adobe Illutrator,PS近亲,用来画矢量图最合适不过
  • YouTube,前端JS,“中端”(中间人)做C++,后端才是Python之类的
  • Amazon
  • Windows(啊对除了Adobe、KDE等还有微软全都是搞C++)
  • MySQL
  • Firefox和它的Gecko Browser
  • ……

留意下,因为上述的原因,所以在我们这儿学习Qt需要一个对C++语言很深刻的理解(特别是面向物件编程,特别重要。在这儿,会用C语言者更佳)。如果是100%小白不会,那网上随便都是资源,百度一下就对了。

做好了准备安装Qt了吗?

做好了。

非常好。


架设(安装)Qt

首先去Qt官网,https://www.qt.io/。

原创【Qt教学,小白适用,从零开始】- 001 - Qt的简介,为什么用它和如何安装、配置_第1张图片

摁一下左上角的“Download. Try.”。划拉下去直到你看见“Download Qt for open source use”方块,如下:

原创【Qt教学,小白适用,从零开始】- 001 - Qt的简介,为什么用它和如何安装、配置_第2张图片

 按一下“Go open source”(浅绿色字体,没有荧光,没有方框,看见了吗?),再度划拉下去底部,摁一下“Download the Qt online installer”

原创【Qt教学,小白适用,从零开始】- 001 - Qt的简介,为什么用它和如何安装、配置_第3张图片

 温馨提醒:既是“Online”,亦即表明了你的网络/流量必须特别稳定,不然会超级慢、急、卡。

完了之后等系统确认你的操作系统,以此提供合适的安装器 (installer)。我用的是苹果系统(最新版macOS 13 Ventura),自然写着“OS X”,“macOS”,“Darwin”或者之类的东西啦。

原创【Qt教学,小白适用,从零开始】- 001 - Qt的简介,为什么用它和如何安装、配置_第4张图片

我这用的是苹果电脑,所以要有一个额外的步骤:使用“磁盘工具程式”解压下载完的.dmg档。Windows使用者则可少烦恼,直接双击运行即可。而Linux使用者则需要100%使用终端 (terminal) 开启安装器,并且依照知识安装额外需要用的lib (库,Library)。(好像是什么lib-xcccb来着,好久没用linux了)

废话不多说,解压完,安装完,就该启动了。双击installer图标,会在大约5秒内出现以下界面:

原创【Qt教学,小白适用,从零开始】- 001 - Qt的简介,为什么用它和如何安装、配置_第5张图片

这时你需要上Qt官网注册一个账户--放心,安全,免费。 然后你再点“Next”,像你怎么安装其他软件一样同意条款与细则(具体到Qt安装器就要把两个勾都勾掉),然后按“Next“。如果你看到了”Welcome to Qt Setup“,那么就再按一次Next。

如果你这个时候碰上了”Cannot find source … in mirror ……”的话,也就是Qt安装器不能够在相应的镜像 (mirror) 里头找到需要用到的压缩包 (zipped file),这是你需要切换镜像。一般来说,中国的Qt安装器默认选择阿里云作为镜像,但是阿里云貌似不再支援Qt5,所以Qt安装器会找不到Qt5的源代码压缩包。这是你需要用终端指令“ --mirror "http://ftp2.nluug.nl/languages/qt"”来完成对于镜像的切换。

原创【Qt教学,小白适用,从零开始】- 001 - Qt的简介,为什么用它和如何安装、配置_第6张图片

然后Qt线上安装器会问你该如何处理用户虚拟的信息,个人建议予虚拟信息以Qt,绝对安全,而且可以帮助Qt做的更好。它其实不会传用户名、密码、信用卡号等敏感资料给Qt,顶多一些崩溃报告 (crash reports)、用户提交的代码之类的。 当然有完全禁止传信息予Qt任君选择。

选完之后按“Next”。

原创【Qt教学,小白适用,从零开始】- 001 - Qt的简介,为什么用它和如何安装、配置_第7张图片

记得勾选“Custom installation”。按一下“Next”。

 原创【Qt教学,小白适用,从零开始】- 001 - Qt的简介,为什么用它和如何安装、配置_第8张图片

谨记一定至少选一个Qt的版本,作为API。笔者建议读者们选择Qt5和Qt6,以便有兼容性的性能。

请注意Qt 6.5只能安装在以下操作系统上:

  • Windows 10 (Build 1809 或更高级)、Windows 11
  • macOS 11 Big Sur、macOS 12 Monterey、macOS 13 Ventura
  • Linux Ubuntu 22.04 LTS或更高级、
  • Red Hat 8.4或更高级
  • OpenSUSE 15.4或更高级

如果不行,那么就试试Qt 5.15.2吧:

  • Windows 7或更高级
  • macOS 10.13 High Sierra、macOS 10.14 Mojave、macOS 10.15 Catalina、macOS 11 Big Sur、macOS 12 Monterey、macOS 13 Ventura
  • OpenSUSE 15.1或更高级
  • Linux Ubuntu 18.04或更高级
  • SUSE Linux Enterprise Server的任何版本
  • Red Hat 7.6或更高级
  • 所有能够运行GCC 5.x或以上,ICC 18.x以上的Linux机器上面(就算你自己一个人用Linux核心做了一个自己的作业系统,只要它能够用GCC编译 (compile) C++代码,那就行)

作者强烈推荐读者选以下成分 (components):

  • Qt 6.5.0 全选(作者当时用的版本,有可能随着时间而变化,反正“对于电脑编程技术来说,最新的的确就是最好的”)
  • Qt 5.15.2 选<作业系统的名字,例macOS、minGW>,Sources,Qt Charts,Qt Quick 3D,Qt Data Visualization,Qt Lottie Animation,Qt Purchasing,Qt Virtual Keyboard,Qt WebEngine,Qt Network Authorization,Qt WebGL Streaming Plugin,Qt Debug Information Files,Qt Quick Timeline
  • 净勾选Qt Creator,其他的什么Debug Symbols,Installer Framework和Ninja通通不要,CMake也是。

然后再次同意条款(上次是GPL,这次是LGPL)。

这大概需要用到43.19GB的容量。如果少于50GB的话,作者这里还有一个精简版:

  • 净选自己需要/最合适的Qt,例如符合上述Qt 6.5的条件的就只选6.5,别理其他的5什么的了。然后不要勾选两个WebAssembly、Android、Sources、iOS(如果有的话)、Qt Quick3D、Qt 5 Compatibility Module、Qt Shader Tools、Qt Debug Information Files、Qt Quick Timeline。
  • 至于如果条件不足以安装Qt6.x的话,那就取消勾选Qt 5.15.2中的WebAssembly、Android、iOS(如果有的话)、Qt Quick 3D、Qt Lottie Animation、Qt WebGL Streaming Plugin、Qt Script (Deprecated)、Qt Debug Information Files、Qt Quick Timeline。

一顿操作下来大约可以节省个一半容量,甚至是十倍的容量(至4.66~21.16GB)。

然后就等它安装完毕。一般来说,按照“完整版”来推算,大概需要30分钟的时间。按照“精简版”来推算,大概需要10~15分钟的时间。

如果你看到“Finished”,并且有个“Exit”之类的指令在安装器的左下角,那就取消勾选所有的“Launch Qt Creator”和“Open README.txt”,然后再点一下“Exit”,离开安装器。

恭喜你,Qt安装完毕。接下来,就要准备好你的手跟大脑,准备好开始我们的第一个Qt专案 (project) 吧。

你可能感兴趣的:(Qt,qt,c++)