最新QT从入门到实战完整版

  • 一、04 创建第一个Qt程序

来自

一、04 创建第一个Qt程序


好,那么刚才我们看到了Qt create的一单一些简单介绍之后呢,我们不可能只是对它进行一个简单的简介就完事了,接下来呢,我们要创建一个工程以后我们在使用这个QT的时候,基本上每个案例都要走这一套流程,所以说呢,我们接下来呢,去看咱们如何创建一个新的工程啊,首先呢,有两种方式,一种是直接点击new project,还有一种方式点击这个新建文件或项目啊,那我就点击这个比较快捷一点啊,


那么点击进来之后呢,它有一个模板在这里边,我们只用到会用到这个开发窗口中呢,会用到一个模板,就是这个叫QT的application,也就是在这里边有一个application选项啊,QT widgets application,那么它有自己的一个中文的解释啊,这个中文解释在这。啊,创建一个桌桌面的QT应用,然后呢,包含一个叫QT设计师的一个主窗体,就是默认的情况下,他就已经有一个窗体实现出来了,所以说。

你可以直接运行,直接就看到一个主窗体啊,然后下边呢,我们可以去,呃,点击choose是下一步的意思,然后cancel呢是取消,然后我们进行下一步。

那么点击下一步骤啊,创一个项目呢,有这么四个大步骤,我们一个一个去看,首先第一个叫项目的简介和位置啊,那么这个位置这这第一个你要先给他一个项目创一个名称,比如说我们先给他来个叫 first project第一个项目对吧,那么当然你看刚才我比如说在零一中啊,我想做一个这样的操作,空格他就给你报错了啊,你就在创业项目的时候不能有空格啊,然后还有呢,就是零一,比如说这第一天是吧,第一天啊也不能有中文,所以说呢,在创业项目中呢,不能有空格,不能有中文啊,你可以有下划线啊,比如说零一,然后下划线first第一个项目啊好。

然后下边再来看一下路径,路径这块呢,学习到今天咱们的路径下,比如说这个126班,然后咱们的send to student,最下边有一个QT,第一天扣的。好选择选择之后啊,这里边你会发现我也没有中文路径啊,那么如果这里边你出现中文路径的话呢,它不给你报错,不会给你报错,然后你点击下一步,一直创建出来项目之后,但是你运行出来之后,第一个窗口你都显示不出来,所以说这个东西呢,你自己要注意一下,不要有这个中文路径,这点很重要啊,因为有同学这个上课啊,忘了这些事儿了,没听到,没听到之后呢,啪写了一个中文路径,下边运行起来之后,代码都敲完了,啪运行不出来啊,那么就是因为你的这个路径有问题,所以说你的默认的窗口都已经创建不出来了啊,这个设置为默认路径的话呢,我就不设置了啊,因为这个设置默认路径大家应该也了解什么意思,就是下次你还在这个路径下边呢,去创建哪些项目。

你可以选择这个默认路径啊,如果不是的话呢,因为咱们每天的项目都不一样,对吧,今天是24啊,明天25,所以说我就不设置这个默认路径这一块了啊,然后在下边儿我们就这个项目的简介啊,就位置这块,我们做完之后呢,点击下一步。

下一步之后呢,有一个叫叫KK这块呢,是一个叫构建套件,有的同学可能用的是中文版啊,中文版后边会写着叫构建套件,什么叫构建套件呢。啊,那么在这个QD中呢,它还支持一些安卓的一些开发,如果你选择安卓版本的话呢,哎,那么这块呢,会有一个多一个选项,就安卓的一些配置环境,然后你去自己选择这个,对对它做一些选项,这是第一个啊第二个,呃,有的同学呢,可能今天这个安的是五点四点以前的版本,那么5.4以前的版本啊,和现在5.65.9这样的版本呢,它不同的版本代码上面有一些不一样的区别,区别啊,我们课上也会去解讲解一下低版本和高版

的一些差异啊,那么当你去按那个低版本之后,你会你会发现诶,有些东西你必须要添加,然后才能去使用有些这个知识点啊,那么后边你会觉老师我也想用你的版本了,那那这个时候呢,你可以去不删除你的低版本,并且呢,直接安装一个高版本,在这个构建套程中呢,你就可以在开发中呢,去选择你的套件啊,你想用哪个版本去创建你的像啊,那么这个时候他就给你一个列表,你可以用5.6版本,5.9版本,你可以就安装多个版本,然后去在这个在这个界面中进行选择啊好,这是构建套件的一个一个用法啊用途。

好,那么下边呢,我们继续。再往下叫类的信息,你在创建一个QT的项目中的时候呢,它都会让你默认的去创建一个类,这个类呢,就是主窗口的那个类啊,但是这个类类名呢,我们先不看了,在这个基类中在就是这个类啊。

它有一个基类,这个基类呢有三种选择,这三种选择分别叫什么呢?一个叫Qmainwindow, qwidght,还有一个叫qdialog。他们的关系是什么样的一个关系?是这样一个关系。好,是一个继承的问题啊,这个qwidght是一个父类,然后呢,这两个是子类能理解了吧?啊那么什么叫父类呢?它是一个最简单的一个窗口啊,你创建这个种这种窗口的时候呢,一创建出来之后什么都没有,就是一个大空窗口在上面啊。

而Qmainwindow,它多了哪些呢?它多了一些叫菜单栏,也可以拥有这个工具,上边这些工具,包括下边这些状态栏啊,它都可以拥有啊,它可以多出来的东西,就是它这是一个派生类,可以比父类中多出一些东西。

就dialog这个单词不陌生,叫对话框,对吧,什么东西叫对话框。你这个咱们学了这么多的软件,你肯定知道什么叫对框,你看我现在一个东西叫对话框吗?是不是弹出来对话框啊,对吧,对话框一般呢,它这个里边呢,很少有这种最小化最大化的一些按钮,包括它一般会有一些选择性的按钮,比如说点击下一步啊,我点击这个取消啊,啊这这都是一个对话框的一些标志性的东西。

那么我们首先呢,先来创一个基类,就是这个空窗口,然后这个类名呢,你可以默认用它,或者说可以换一个名,比如我叫mywidget ,可以认为理解出来就是一个窗口的意思,在我们的设计中呢,基本上都会一直跟着一个单词打交道啊,就是mywidget ,这个叫我的自己的一个窗口类,那么这个窗口类写你这个单词之后,你会发现它会默认的给你添加一个点h.和点cpp。而且这个名呢,跟你的名一样,他都给你打好了,所以说呢,你只要给这个名,给这个类起个名,后边的东西你都不用去操心,然后这个是创建界面的话,就是刚才我说的这个设计这一块,你就如果你要选勾的情况下呢,它会给你多出来一个叫设计界面,然后你可以去直接拖拽一些控件,那我们一开始学习的时候呢,先不学它啊,先不着急去学这个创建这个界面,我们先用代码呢去实现一些功能啊,那么这块我们先不要这个UI的界面,然后下边呢去点击下一步。

下一步呢,我们就来到一个汇总的界面,汇总界面这一块呢,叫添加到版本的控制系统,这个干嘛使的呢?你看我这里边是没有的对吧?空的,这个就是在以后你的QT开发中啊,肯定不是你一个人在写一个大项啊,可能有四五个人或者一个小团队去写一个项目,那么这个时候呢,就需要用到一些版本控制系统,有一个叫SVN啊,然后VSS,git,这个大家有没有听过这些,比如这些版本控制系统有没有听过?啊,有的可能听过git 啊,有的听过SVN,对VSS用的比较少,那么这些版本系统呢啊,你会多多少少的需要在课技下对它做一些了解啊,应该了解他呢,因为呃看这以以后咱们在毕业之后,你可能在本中你是写一些自己这个工作经验的问题,对吧?那如果你要有工作经验的话,你肯定是对他们会有多多少少一些了解的啊,因为你肯定是团队开发嘛,商业开发。

那你会对这个版本控制系统有些了解,那那么简单介绍一下这个东西啊呃,SVN的话呢。我我用的比较多一些啊,这个之前在这个游戏开发的时候,那么SVN的使用的时候呢,啊,比如说a同学写了一些代码,咔咔咔写了几行代码,对吧,B同学呢,也写了几行代码,那么这个SVN呢,它就有一个叫代码合并的能力,比如说他们都在同一个文件中,都像这个a点点这个CPP文件中去写的一个代码,对吧,那他呢,就会在这个代码中把a和B呢给它合并起来啊,合并起来,但是啊,他检测的时候呢,比如说a写完代码,B呢必须要写到他这个代码之下才行,所以说呢,在a同学在写代码前的时候要注意一些事项,就是他先要做一个叫update。 update什么意思?更新啊,也就是你在写,你在这个写这个文件,对这个文件进行描写写新内容

之前你要先更新到最新的内容才行啊,如果你不更新到最新的内容的话,你没法保证你是不是已经和B写的冲突的代码了啊,就是B写的是前三行,你写的也是前三行,这时候有冲突了,那么如果B写的123好,你更新下来之后,123是不是就已经有东西了,那你知道有东西之后,你是不是就直接写456上了,对吧?所以说呢,这个呢,呃,虽然这个版本控制系统它是有合并能力,但是呢,你也给合并对了才行,那么有的时候呢,就忘这一步了啊,忘记更新这一步了,那你需要干嘛呢?你需要这个时候呢,他就给你报错了,报错之后你需要一个叫slove什么意思,解决冲突啊,就是你需要把这个东西,他会给你报一个错,报一个这个SNG,报一个什么错呢?a,他给你写个a写了什么什么代码,B写什么什么代码,然后他就把把这个名给写上去了,a和B,因为在这里边SVN使用的时候。

肯定是有自己的一个用户名的啊用户名,那么也就是说a用户名写什么代码,B用户名什么写什么代码,他都会告诉你,那那冲冲突了他也会告诉你啊告诉你之后呢,诶你你要知道之后,你就和B去商量啊,我作为a我就和B去商量,诶这样代码应该怎么去修改,然后B说你改吧,啊我这样代码你不要动,然后呢,你就接着往下写就行了,这个时候你就可以把这个东西改到正确了,之后123456通畅了啊通畅之后呢,你告诉SVN我解决了这个通突。写一个slove就可以解决了啊,那么这是一个一般使用的操作,那么slove完之后你还要干嘛呀。叫commit提交对吧,解决完通过之后呢,你还要提交你的这一个代码啊,就是这么几个常用的一些操作。

包括SVN内部呢,它有一套引擎的自己的一些bug,有时候出现一个叫lock 对不对,哎,他当出现他锁的情况下呢,你没法更新,也没法提交,什么都干不了啊,那就是他自己的时候,他出现了一个锁的一个这个机制,那么这个时候呢,你要在你的SVN的这个里边呢,要写一个叫unlock啊,要解锁,把这个锁给解开,然后你就可以正常的去使用了,这是SVN的一些常用的一些这个小的技巧,那么这个大家自己课下的时候可以对个SVN或者VSS和GIT呢,你只要对一个有一个较深的了解,其实这几个机制都差不多,所以说呢啊,你多少了解一个就可以了啊。


好,这是我们版本控制系统,我们这里边儿五天课程里边没有什么大的项目需要团队开发的,所以说我们也不需要呃安装这些东西,对它有一个了解行为,然后下边你来看一下这个啊。

这里这个框里边画的东西,就是我们待会儿创建出来这个项目之后,他会给你添加哪些文件,第一个点pro文件,这个pro的英文单词就是project pro工程文件,这个就类似于咱们在VS中啊,有一个叫sln的文件叫点sln,叫解决,解决这个项目通这个解决方案是吧?解决方案你是不是双击这个东西就能打开你的那个VS项目呀,对吧?好,这个点pro也是一样,工程文件你可以双击这个文件整个把你工程打开,这就是咱们创建工程之后,它给你生成文件,然后点CPP文件呢,是你的程序入口啊,就是你的程序mywidget的点CPP和mywidget的点H,是不是刚才我起的名啊,对吧?我自己起了一个窗口,这是窗口的一个点CP和点H文件啊,它会给你创生成这么几个文件,好,下边呢,你就可以点击完成了。


点击完成之后,你可以看到左边是不是就刚才我说这四个文件对吧?那么这个文件呢,它是有这么一个格式的,也就是上最上面是你的项目的一个文件夹啊,里边呢,包含你的这个点PRO啊,还包括里边的一些具体的头文件和原文件,有的同学觉得不喜欢看这种头文件文这个原文件的一种区分的话呢,在这个里边,在这儿啊,看一下过滤器有一个叫简化树形视图,你可以点击之后,你发现下边区分的文件夹是不是就没了,对吧?啊,一般来说我都喜欢用它,因为这样的话你会很清晰看到哪些是头文件,哪些是原文件啊,如果你要不喜欢看,所有把所有东西都放在一起,你可以简化它啊。

第二个,你就可以在这儿有一个叫分栏。啊,你可以选择这个左右分了,左右分了啊,那比如说这个项目呢,比如说这右边的项目是我的代码,你可以呢,调整到这一块,我的代码对吧,然后左边呢是你的代码,你可以照照着我代码呢去敲东西啊,就可以用这种分栏的方式啊,那么分栏呢,可以进行删除的啊,你看这样就删除掉了,刚才我点了一个这个啊,这样删除分栏一点就没了啊,这是分栏的一个操作啊,

那么下边呢,我们先来简单的介绍一下main函数,是程序的入口呢,都是从那开始走的啊,我们先来看一下,第一个include,一个my.h这是包含头文件,这就不多说了啊,那这是我自己写的,一个叫my.h,第二个叫QT application叫包含。包含一个应用程序的类的头文件,那么q application呢,就是应用程序这么一个类

下边main函数不说了,是咱们的程序的入口啊入口,所以入口地址呢。那么这两个参数还记得是什么吗?一个叫int ARGC,还有一个char *ARGV在C语言中应该是介绍过吧。ARGC是命令行变量的数量,而ARGV呢,这是一个数组叫叫命令行变量的数组。那么就是在程序中啊,你对这个程序有各种各样的操作,比如说鼠标点了,键盘敲入了,都是从那函数中呢,这两个参数接收到了这些命令。

而下面的代码中呢,他把这些命令,都放到了一个叫Qapplication这个对象中,也就是你接到的鼠标啊,键盘这些命令呢,都放在下边啊,那么谁这个QA是什么东西呢?就是叫应用程序对象啊,就叫一个a应用程序对象,而这个在这个QT中。应用程序对象有且仅有一个,这个对象呢,只能有一个,而且呢,还必须要有这么一个对象存在啊,这个是核心的一个对象叫应用程序对象。然后有且仅有一个,你不能创建多个这个对象。然后下边mywidget这什么意思啊。通过一个我刚创建一个,创建出来一个对象,通过我的类来实例化一个对象,那么这个对象呢,就叫什么呢,就叫mywidget窗口对象啊。

还记得mywidget的父类是谁吗?就是他的父类是谁。就是叫q widget。那么它的父类叫q widget就是一个空窗口,就是一个空窗口,那么这个空窗口也就相当于你按照空窗口来实例化,派生出来一个叫mywidget这么一个窗口来,然后声明出来一个对象。这个对象它调用了一个叫show方法,它调用了一个叫show方法。那么也就是说窗口对象呢,窗口对象默认不会显示,必须要调用show方法来显示窗口。

注意窗口名称!比如说我给它注释掉,注掉之后呢,代码没有问题,语法也没有错误,但是呢,窗口就是不出来,你看下边都什么都有了是吧?这个东西运行起来绿色也都有了,对吧?但是呢,窗口就是没有啊,这是因为你没有对它进行一个显示的功能

最后呢,叫rereturn a.exec。这个就是让程序对象,让这个应用程序对象,也就是刚才说的这个a,啊这个a。进入消息循环机制,进入消息循环,这个消息循环是一个机制啊,这个机制是干嘛呢?就是你可以认为这就是一个死循环,这个死循环怎么说呢?

比如说我写一个while循环,我写一个假的代码while (ture)if是不是就给死循环了,对吧,那么这个死循环什么时候才能退出去呢?比如说我写一个叫if点击了叉子,然后呢,我就break掉。那么这样的话呢,就什么意思呢,大家来看一下,我先把这注释掉,先给它注掉,注掉之后运行一下。你会发现啊,我这个代码并行点之后,并没有窗口一闪而过,你发现了吗?没有窗口什么叫一闪而过,就是啪显示完之后就没了,我们通常会写system pause。为了防止什么,就是为了防止它一闪而过,对不对,你会发现这里边代码是不是没有没有这样的代码,但是他也不会一闪而过,这个就相当于进入一个叫消息循环,一直在等待用户的一些所有的消息
比如说你对鼠标双击或者说移动,它都会捕获这些消息,然后进入这个循环的一个机制,无限循环,什么时候退出这个机制就是在这儿,我什么时候点这个抓点击插到了,他break掉就出去了这这就相当于让这个a对象呢,进入这个循环的机制了,无限循环不会让它一闪而过。

然后也相当于让代码阻塞,阻塞到这这行啊,就是让代码呢,阻塞到这一行之后,后边代码不执行,你比如后边你再写任何任意的一些代码,他都不会走到的啊,除非你点了叉子可能会走到这个代码,但是窗口已经不见了,你也看不到里边的东西了,所以说呢,诶,你要知道这个什么叫消息循环,就是呢,一直在捕捉你的消息,捕捉用户的一些消息,而不会让这个程序一闪而过啊好,也就是除非你点了一个叉子才能退出这个消息循环啊。

那么下面呢,我先总结一下这个第一节课程的一些内容。

04 创建第一个Qt程序相关推荐

  1. Qt入门01 创建第一个Qt程序

    一.安装Qt及Qt Creator 1.Qt下载地址 常用的工具也在这些地方可以找到,当然也可以直接官网下载,考入到网速因素,国内的镜像源网站还是要更快一些.Qt 5.15 之后已经不提供离线安装包了 ...

  2. Qt——P1 创建第一个Qt程序

    #include "mywidget.h"#include <QApplication> //包含一个应用程序类的头文件//程序入口 argc命令行变量的数量 argv ...

  3. 使用eric6创建并运行第一个QT程序

    创建第一个QT程序: 点击new project 项目名:test 保存位置:D:\eric6space\test 选yes. 选OK. 保存位置中自动生成如下文件 下面开始创建QT端的UI文件: 选 ...

  4. 【Qt】第一个Qt程序

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 编写Hello World程序 04. 编译运行程序 05. 预留 06. 附录 01. 概述 QtCreator作为Qt ...

  5. QT学习——Qt工具介绍,Qt助手使用,第一个Qt程序,Qt字符串和字符编码

    一.Qt主要工具介绍 1)qt助手(assistant) 2)qt构建器(qmake) 3)qt设计师(designer) 4)qt转换器(uic) 5)qt资源编译器(rcc) 6)qt元对象编译器 ...

  6. C++桌面应用开发(Qt学习)--Qt简介及第一个Qt程序

    Qt简介 历史: 1991 奇趣科技 优点:跨平台:接口简单,易上手:简化了内存管理操作 成功案例:Linux桌面环境:WPS:谷歌地图等 创建一个Qt程序 点击创建项目后,选择项目路径以及给项目起名 ...

  7. 在Rockchip RK3399 Pro开发板上跑通第一个Qt程序

    在Rockchip RK3399 Pro开发板上跑通第一个Qt程序 准备工作:将Qt从Windows移植到Linux 一.交叉编译器的准备 下载交叉编译工具 安装交叉编译工具 二.交叉编译Qt库 三. ...

  8. (转)WCF教程系列(1)-创建第一个WCF程序

    作为微软技术.net 3.5的三大核心技术之一的WCF虽然没有WPF美丽的外观 但是它却是我们开发分布式程序的利器 但是目前关于WCF方面的资料相当稀少 希望我的这一系列文章可以帮助大家尽快入门 下面 ...

  9. 第一个程序(python)-helloworld_创建第一个python程序:‘Hello World!’

    安装好python解释器就可以创建第一个仪式程序Helloworld了 1.Python程序的3种运行方式 1.1.Python解释器直接运行 在Windows或者Linux命令行输入python,进 ...

最新文章

  1. 线上接口经常超时,我用线程池+ FutureTask解决了,YYDS
  2. php实战第二十一天
  3. 七十七、SpringBoot整合Rabbitmq
  4. 初次使用 Elasticsearch 遇多种分词难题?那是你没掌握这些原理
  5. 我的常用软件大公开!
  6. 昇腾AI处理器软件栈--张量加速引擎(TBE)
  7. 【C语言】删除元素(函数,数组的扫描)
  8. 面向对象PHP之Clone对象
  9. C++11中内联函数(inline)
  10. 改变ALERT组件的背景色和背景透明度.
  11. 21世纪需要的七种人才—李开复
  12. 什么是物联网?物联网与互联网的区别是什么
  13. LeeCode(C++):买卖股票的最佳时机
  14. CPU卡指令返回错误集
  15. TouchBar Dino for mac(TouchBar上的小恐龙跑酷游戏)
  16. 最新炫酷恶趣图制作神器小程序源码+支持流量主/功能强大
  17. CSS复合选择器---后代选择器、子选择器、并集选择器、伪类选择器
  18. 电脑无法升级windows11的解决办法
  19. 将一个长字串分拆为多条记录
  20. 微信浏览器字体调整 PHP,如何针对微信浏览器的调整字体大小功能进行适配?...

热门文章

  1. 经济基础知识(初级)【2】
  2. 计算机音乐谱子十年,陈奕迅《十年》简谱
  3. Xilinx zynq USB开发
  4. 虎扑《不冷笑话》爬虫实战,顺带说说最近学写爬虫的经历(一)
  5. Cocos2d游戏开发学习记录——4.开发《植物大战僵尸》
  6. 计算机安全的重要意义,浅谈计算机安全的重要性
  7. 基于C语言库windows.h的轰炸程序
  8. 22.5.4-简历修改
  9. 在少儿编程中使用easygui(5):ynbox/boolbox/ccbox
  10. 靠软色情博出位?20分钟赚3000万,揭秘JK制服的隐秘与疯狂