QT基础之——QT概述

QT概述

什么是QT

        QT是一个跨平台的C++图形用户界面应用程序框架。为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易拓展,并允许真正的组建编程。我们本系列QT基础讲解所用到的QT软件是 QT creator(Community)如果有需要下载的小伙伴可以后台私信我。

QT原理

        QT就相当于在我们之前学习C++用到的Visual Stdio(以下用VS代替)编程软件中添加一个类,与QT不同的是VS软件会创建一个.h头文件以及一个.cpp文件,不会创建main.cpp。

        言归正传,我们进入到QT 创建类的界面中:

        QT环境下创建一个类的流程大概是:在.h头文件中声明所创建的类,在.cpp文件中引入,并自动生成析构函数和构造函数,同时添加一个主函数。

        第一行“类名(C)”中填入的就是我们为这个创建的类所起的名字,第二行“基类(B)”就是我们这个类想要继承的基类,展开我们可以看到有三个选项:QMainWindow,QWidget,QDialog。下面我们简单介绍一下这三个基类以及他们之间的关系。

  • QMainWindow:是一个窗口类,具有菜单栏、工具栏、状态栏。当我们选择继承QMainWindow的时候,我们所创建的类也就拥有和QMainWindow一样的性质,此时就形成了多态(PS:多态的目的就是减少通过一个类来创建新的类)。

  • QWidget:窗口类,只有一个窗口,没有菜单栏等。

  • QDialog :窗口类,例如对话框等都属于QDialog的范畴:当我们创建一个记事本的时候,输入一些内容,点击关闭按钮之后,会弹出一个对话框来询问是否保存这些内容,这个对话框就属于QDialog。

QMainWindow、QDialog、QWidget之间的关系

  • 总结起来,三个类都属于窗口类,QWidget是其他两个窗口类的基类。

        了解完上述内容之后,我们就来创建一个基于QMainWindow这一基类的类,创建完成之后我们会看到以下几个界面:

映入眼帘的就是"项目"二字

那么在哪能找到这个项目呢?

在我们保存的路径中就可以找到这些文件了。 

.pro界面

头文件 .h文件界面

源文件 类的.cpp界面

源文件 main.cpp界面 

界面文件 .ui文件界面

初始文件中各个部分的介绍 

接下来我们来介绍一下初始情况下各个部分的大致内容:

.pro文件

着重介绍下面这两个:

  • core:表示引入模块,core 包含了QT的一些特性如:信号与槽,用于保护指针(Qpointer)获取对象所有权等
  • gui:该模块包含了窗体系统,事件处理,字体等

信号与槽:当我们关闭一个窗口时,这一举动会向信号槽发出一个信号,该信号被信号槽接收之后信号槽会发出指令。

.h头文件

        由图可以看到,当我们在创建类的时候选择的基类就是QMainWindow类,在代码中就体现出来了;而构造函数的关键字"explicit"的作用是防止用"="调用构造函数;同时具有析构函数,下面有一个UI作用域中定义了一个ui指针(以后会讲到)。 

类的.cpp文件

        当进入到类的.cpp文件中,我们会看到有一行一长串的代码,别着急,我们慢慢分析:首先CSDNone::代表的是作用域,紧接着的是CSDNone的构造函数,后面的“:”以及后面的代码构成了初始化参数列表再后面就是析构函数析构ui指针了。那么就有疑问了,刚刚的头文件中不是只创建了一个ui指针对象吗?为什么前面还有一个QMainWindow的构造函数呢?在此之前我们要看一下QMainWindow的内容,把鼠标放在QMainWindow上,然后按键盘上的F2,找到QMainWindow的构造函数:

我们可以看到,QMainWindow的构造函数是有参构造!!! 那么我们就要回顾一下C++中的知识:在学习C++的时候,我们知道当一个子类继承父类时,创建子类对象一定会先创建一个父类对象,而创建父类对象的时候一定会调用父类的构造函数,顺序为父类构造->子类构造->子类析构->父类析构,但如果父类构造函数不是无参构造时,我们需要在子类对象的初始化参数列表中显示调用父类构造函数。在VS中就应该是这样:

 main.cpp

介绍一下

  • QApplication:该类型创建的对象主要是管理应用程序的事件循环,处理用户输入和其他按键,通俗来说就是用户做出的一系列举动:关闭窗口啥的。
  • w定义一个创建的类的类型的w对象,这个“w.show()"的作用就是显示窗口 
  • return a.exec():等待一个指令来关闭窗口等

那么这时候就有一个疑问了,为什么不能是return 0呢?为什么改成return 0之后会看到窗口闪一下就没了?

答案很简单:我们知道创建的这个w对象,他是一个局部变量,当作用域结束的时候就被销毁了,那窗口肯定就消失了,所以我们要用return a.exec()来等待指令关闭窗口,说白了就是给窗口卡在那。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
天气预报是一个非常实用的个人项目,它可以帮助我们及时了解当地的天气情况,帮助我们合理安排日常生活和外出计划。 我的qt个人项目天气预报主要包括以下功能: 1. 实时天气查询:通过调用天气API,可以实时获取当地的天气信息,包括温度、湿度、风力、空气质量等指标。用户可以根据自己的需求选择查询当天或未来几天的天气情况。 2. 城市选择和管理:用户可以通过界面上的搜索功能输入城市名字查询该城市的天气情况。同时,用户还可以通过添加和删除城市的功能,方便地管理自己关注的城市列表。 3. 天气图标和背景:界面上会显示对应的天气图标,如晴天、多云、雨天等,以直观地展示当前的天气情况。同时,根据不同的天气状况,背景图片也会相应地进行变化,增加界面的美观性和可视化效果。 4. 未来天气预测:除了显示当天的天气情况外,我的个人项目还可以提供未来几天的天气预测,帮助用户更全面地了解未来几天的天气变化趋势。 通过这个个人项目,用户可以方便地获取并查看天气信息,从而更好地做出日常生活安排。此外,用户还可以根据天气预报的变化,做出适应性的衣物搭配和外出计划,提高生活效率和便利性。 总之,我的qt个人项目天气预报能够为用户提供准确、及时的天气信息,并通过直观的界面展示,帮助用户做出合理的日常生活安排和外出计划。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coke_3.2.2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值