Qt项目代码解释

如果想简单了解Qt,可以看下我在学习起始时的博客 Qt背景(简单了解Qt)-CSDN博客

在装好Qt后进入并创建一个项目,我们在什么都不写的情况下Qt中也有一些代码,让我们来了解一下这些代码吧.

main.cpp

argc时命令行参数的个数,argv是命令行参数的内容

但当前Qt下exec和linux系统中的exec没有任何关系!只是名字一样.

weight.h

重点:使用父类就要有对应的头文件 , 头文件名和类名相同.

(之后编写代码时,对于Qt的类直接先拿来用,可以使用就说明间接包了头文件,不能使用在包下对应的头文件)

重点:知道槽 和对象树.

(对象树就是之前数据结构中的树,但是这里是n叉树不是二叉).

(form file 就是Qt中使用的一种界面文件,在下面有详细说明)

weight.cpp

qmake是在我们写的代码进行编译时,首先qmake会基于我们写的代码去生成更多的相关的c++代码,然后再进行编译,编译的就是qmake后生成的代码.

form file

重点 :form file,在右边文件那里展开forms可以得到这个ui文件.

双击我们的这个ui文件发现直接切换到了设计页.此时Qt Creator会调用Qt Designer 打开ui文件.图形化的界面编辑器.

此时再点击左边的编辑按钮就可以看到ui文件的本体.ui文件本质是xml.

这个格式是xml格式(和html很相似,都是使用成对的标签表示数据)(标签就是<>)

xml里的标签,有哪些标签,表示什么含义,都是程序员自己定义的.这里看到的标签是开发Qt的佬定义的.(这里标签的含义不需要关注)(类似于linux中的自定义应用层协议).

html也采用标签但是html中的标签都是固定的.标签的含义也有专门的委员会规定.浏览器也是按同样的规则解释.

empty.pro(创建项目名.pro)

这个就是Qt项目的工程文件,也是qmake工具构建时的重要依据.(就类似于linux中学的Makefile)

这里qmake和.pro结合一起就相当于Makefile.

一些补充

这里的.h文件就是weight.cpp中所包含的那个头文件.

.h文件中就有ui_widget这个类.

还可以看到一个.exe文件

以上就是Qt代码的简单解释.接下来就让我们来实现下Qt中的第一个代码吧.

自己实现下hello world

首先要弄明白我们在哪里编写代码.一般在我们在设置项目时选定的类的cpp中的类构造函数中编写.

再开始编写时如遇到下图错误就要进行和类名相同的头文件的包含.

我们在屏幕中打出"hello world"就需要用到一个名为label的控件

在Qt中更加推荐在堆上创建的风格.(其实也可以在栈上创建:QLabel label=QLabel(this))

在创建时最好给当前对象指定一个父对象,将它挂到对象树中.(传入的this就是我们所在的构造函数要构造的对象,在main中的Widget w).

要指定空间中的字符要用到setText类方法,可以看到参数是QString类型,当时c/c++库都不太好用,于是Qt就自己造了轮子

后来c++库形成了,我们也可以使用c++中的库(Qt二者都支持)

接下来就可以用"hello world"来进行初始化了.(Qt中的string和c++中string相似,也支持const char*的单参数构造函数隐式类型转换.

之后执行代码就在左上出现hello world了(位置可以改变,我们之后在学习)

这里,new了一个对象,怎么没delete,这样不就出现了内存泄漏吗?

但是这里不会发生泄漏现象

既然谈到了对象树,我们就要好好了解一下.

放个传送门 Qt对象数-CSDN博客

相关推荐
落羽的落羽8 分钟前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
总要学点什么1 小时前
第108篇:三维特效-图片轨迹线效果——把贴图滚成一串箭头,想用它的本色反而整条消失
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
starzy19905 小时前
深入理解Scala隐式值:编译期自动装配
开发语言·后端·scala
布莱克6056 小时前
Swift 条件语句详解:从 if 到 switch 的完整指南
开发语言·ssh·swift·switch·条件语句·guard·if
吴可可1236 小时前
ActiveX调用WScript.Shell原理揭秘
开发语言
晴天的雨.9927 小时前
【C++】继承篇
java·开发语言·c++
SomeOtherTime7 小时前
第 1 讲:内存布局与所有权解剖——栈帧、胖指针与“移动/拷贝”在汇编层面的真实面目
java·开发语言·汇编
总要学点什么7 小时前
第106篇:三维特效-流动线效果——让一颗光点沿整条线一路滚到头
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
大可不必了18 小时前
03 函数定义和调用
开发语言·python
I_belong_to_jesus18 小时前
C++关于分支预测的优化1
开发语言·c++·算法