初学QT,你应该了解的五大基本要素点

前言

首先,我的确要恭喜你们,当你们愿意手动点击进来看这篇文章的时候,小编相信你们一定是抱有一定的求学的态度来到此处的。

其次嘛,我这个人也不太喜欢说废话,如果你喜欢作者的文笔风格或者想要了解更多相关知识的话,可以直接与本人私聊,包教不包会的亲!

基本要素点

一,概念

什么是QT?QT是干什么用的?
我想你在学习QT之前应该已经对此有了一个大致模糊的概念,什么C++的前端常用工具啦,什么高功能跨平台啦,什么前后端耦合度颇高啦,什么工业化风格非常严重啦,什么垃圾的版本更迭啦之类的。

当然,按照官方一点的术语讲,Qt是一个跨平台的C++应用程序开发框架(对此,我不可置否,但是吧,他也可以用Python写),由挪威的Qt公司(Trolltech,后被Nokia收购,现为Qt Company的一部分)开发。Qt提供了一套丰富的类库和工具,用于开发图形用户界面(GUI)、网络应用程序、数据库应用程序、嵌入式应用程序等各种类型的软件。

当然如果你对于这种基本概念没啥兴趣的话(我指的是咬文嚼字),小编也可以用一个简单的概念告诉你,Qt就是一个支持C++和Python语言的开发框架,帮助开发者们更简单的实现你所需要的功能。

emmmmmm,感觉说了跟没说一样。正如它自己的概念所提及的一样,QT支持跨平台开发与GUI编程和网络编程等部分,但这些部分相对来讲非常庞大,作为初学者来说,你只需要大概知道它有它可以就好了。

二,特性

在简单了解过QT的概念后,特性这两个字就显得有些俗不可耐了。

当然, QT的特性可以分为以下五点:

1,跨平台性

Qt是一个跨平台的开发框架,可以在多个平台上运行,包括WindowsmacOSLinuxAndroidiOS等。开发人员可以使用相同的代码库构建跨平台的应用程序,从而节省开发和维护成本。

2,模块化结构

Qt被组织为多个模块,每个模块提供不同的功能。例如,QtCore模块提供了核心功能,QtGui模块提供了图形用户界面相关的功能,QtWidgets模块提供了用户界面组件,QtNetwork模块提供了网络编程功能等。这种模块化的架构使得开发人员可以根据需求选择所需的功能模块。

3,信号与槽机制

Qt的信号和槽是其最重要的特性之一。它是一种基于事件驱动的编程模型,允许对象之间进行松耦合的通信。通过连接信号和槽,可以在一个对象发出信号时触发另一个对象的槽函数,实现对象之间的交互。

4,丰富的类库

Qt提供了丰富的类库,涵盖了各种功能和用途,包括用户界面开发、图形绘制、网络编程、文件操作、数据库访问、多媒体处理等。这些类库可以大大简化应用程序的开发过程,并提高开发效率。

5,工具支持

Qt提供了一套完整的开发工具链,包括Qt Creator集成开发环境(IDE)、Qt Designer界面设计器、Qt Linguist国际化工具等。这些工具能够帮助开发人员快速构建和调试应用程序。

三,核心模块

QT的核心模块主要包括以下三个部分:

1,QtCore(核心功能)

QtCore是Qt框架中的一个核心模块,提供了许多基本的功能和类,用于支持Qt应用程序的开发。可以说,QtCore是Qt框架中最基础、最核心的部分之一,99.99%的Qt应用程序都会用到它。

而他的作用就是提供了许多基本的功能和类,比如说所有Qt对象的基类QObject(元对象系统实现),字符串处理类QString(你可以理解为QT自己的std::string),QT的事件处理(鼠标、键盘的事件相应)以及QVariant(QT底层的通用数据结构,多用于隐式转换)等等等等。

2,QtGui(图形用户界面)

QtGui是QT在后端底层的基础上扩写的UI图形模块,提供了许多基本的窗体功能和类,用于支持将后端数据以图形化显示地展示到用户的图形界面上。可以说,在这一块,QT公司是下了功夫的。

当然,一般来说,如果你用QT但不打算写UI部分,还打算用C++语言的话,其实我更推荐你直接使用Visual Studio 2022VSCode,然后引入QT作为一个扩展库去使用;如果你更偏向于学习一个新的编译器或者你就喜欢用他们原生支持的编译器,那就使用QT Creator吧。

3,QtNetwork(网络编程)

QtNetwork是QT在网络通信部分的相应模块。同样的,他也提供了许多网络相关的类和库,用于实现进程间通信和网络通信。不过小编很抱歉的吐槽一句:QT有自己的想法,这是不太友好的。

四,优劣

1,优点

在当年java横行如日中天的年代里,C++与Python像极了两个没有爹娘的可怜孩子。

· 跨平台性

还是那句话,Qt 是一个可以跨平台部署的开发框架。开发人员可以编写一次代码,然后在多个平台上进行编译和部署,极大地提高了开发效率和应用程序的可移植性。

· 适用范围

从简单的桌面应用到复杂的嵌入式系统,只要你需要C++高效和手动调控的特性,QT就无所不能。

· 编程语言

Qt 不仅支持 C++ 编程语言,还提供了对其他编程语言的支持,包括 Python、JavaScript、QML 等。这使得开发人员可以选择他们熟悉的编程语言来开发 Qt 应用程序,并且可以灵活地组合不同的技术和工具。

2,缺点

不可否认,QT不适用于工期紧,工作量大且复杂的大型软件系统。

·版本更迭

就像是jdk的版本更新一样,QT的版本更新做的甚至还没有前者好。

并不是说QT对于有些组件的版本强制绑定关系有多强烈(如果你很希望用QT去做一些花里胡哨的),而是指它自己的编译环境更新的变动内容实在让人难以启齿。

我们都知道,不管任何一种语言,调用其本身的标准库函数和类生成相应对象都是必不可少的操作。然而在QT中,这种操作或者说经验反而会成为你一定的困扰。

为什么这样说呢,因为QT的每一次版本更迭都会莫名的将一些常用库中的函数和类做出一定的修改。最常见的方式有:将某一个头文件下的类中的某个函数去掉,然后换一个新的函数去取代其功能;将一个函数稍稍改变参数和函数名;将某个库中的函数移动到其他库下……等等等等。

那此时就会有人说,那我不更新我的QT版本不就不存在这个问题了?那么小编就要说了,就以小编自己常用的版本QT5.12.6来说,如果我需要添加一个名为Openssl的外部库进行一些特殊的操作,那么我首先需要查看我的QT版本所支持的Openssl最高到哪一版本,然后这才是最悲哀的一点,因为你不更新,对方一直更新,这就导致它旧的版本一下架,你的QT就无法再使用下去了。因为你的那一版本没有人再维护了。

·适用场景

的确,从简单的桌面应用到复杂的嵌入式系统,只要你需要C++高效和手动调控的特性,QT就无所不能。

但问题是,很多时候,我们也需要简易的环境部署和便捷的搭建环境。说白了,当你可以只是简单的敲不到十行代码就可以跑起来一个服务器(go语言),那你又何必洋洋洒洒写上个四五百行去定义一个类,再定义一堆function和API,最后写出来的东西还未必有人家一个库好使(C++)。

3,总结

任何一件事务都注定存在着两面性,如果你可以接收以上缺点中的部分并不认为那算作一回事的话,那么QT确实还是很不错的。

五,前景

目前的就业市场,我是说我发布这篇博客的时间,此时的市场环境下,嵌入式系统的应用市场已经有了逐渐火热的趋势,而对于内存不大,需求又多的小型车机、电机设备等嵌入式应用场景下,QT实在是一个相当不错的选择(就目前来说)。

最后,写文不易,不收藏也请给个赞,谢谢亲~! 

(本文仅供学习时参考,如有错误,纯属作者技术不到位,不足之处请多指教,谢谢)

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值