C++实践之Qt学习(三):使用QtCreator创建Qt项目

文章目录

  • 创建项目
  • Qt桌面应用向导
    • 第一步,确定项目名称和项目路径
    • 第二步,选择项目构建系统
    • 第三步,确定初始类的细节
    • 第四步,翻译文件
    • 第五步,选择工具集
    • 第六步,汇总
  • 项目界面
  • 项目文件说明
    • 关于类中的ui
  • 帮助
  • 构建路径
  • 使用资源
    • 第一步,创建一个资源文件
    • 第二步,添加资源
  • 发布程序

创建项目

打开Qt Creator,默认进入欢迎页,其中默认选择了示例,这里包含了大量的示例
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第1张图片
创建项目需要选择Projects标签
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第2张图片
点击Projects后的New按钮,创建一个新项目:
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第3张图片
这里项目类型选择Application,表示创建一个Qt应用(下方的Non-Qt Project则可以用来创建一个普通的C项目或者C++项目)。

中间区域中则选择Qt Widgets Application,这将创建一个桌面应用程序,包含一个基于Qt设计器设计的主窗口。

点击下方的Choose按钮,进入创建桌面应用的引导程序。

Qt桌面应用向导

第一步,确定项目名称和项目路径

C++实践之Qt学习(三):使用QtCreator创建Qt项目_第4张图片

第二步,选择项目构建系统

  • qmake 是为 Qt 量身打造的,使用起来非常方便
  • cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能

一般简单的Qt工程直接使用默认的qmake即可。
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第5张图片

第三步,确定初始类的细节

该类表示这个Qt桌面应用的启动窗口类。定义这个类的名字、选择其父类、编辑相关的头文件和源码文件名,并选择“Generate from”来生成一个界面设计文件(如果不勾选,则需要自己手动编写代码实现界面内容)。

通常输入主类名后,其他参数会自动调整。
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第6张图片
关于父类的说明
在这里插入图片描述

  • QWidget
    是所有用户界面对象的基类,其他的窗口和控件都是直接或间接地集成自QWidget,一般创建桌面应用程序时需要创建一个窗口,此时选择QMainWindow或者QDialog即可,QMainWindow是主窗口,QDialog表示对话框。而如果不确定是否作为一个顶级窗口或者嵌入到其他窗口中,可以使用QWidget,同时它也是实现自定义部件的基类。

  • QMainWindow
    可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,可以作为桌面应用的主窗口

  • QDialog
    表示对话框,主要用来进行短期交互,可以设置成模态的。一般没有菜单栏、工具栏、状态栏等。

注意,窗口和控件都继承自QWidget,一般控件需要指定父窗口表示其所在,如果不指定父窗口,则该控件可以单独显式,被当作是一个窗口。

第四步,翻译文件

可以忽略
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第7张图片
这里表示如果需要使用Qt语言工具进行国际化支持,可以设定语言和对应的语言文件,这里先省略。

第五步,选择工具集

默认即可
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第8张图片

第六步,汇总

这里检查将要完成的操作,以及可以设置为某个项目的子项目,一般默认即可,点击完成。
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第9张图片

项目界面

C++实践之Qt学习(三):使用QtCreator创建Qt项目_第10张图片
项目名
|-- 项目管理文件
|-- 头文件目录
|-- 源文件目录
|-- 界面目录

这些目录和VS中类似,都是虚拟目录,方便进行分类管理。

项目文件说明

  • FirstDemo.pro:项目管理文件,记录项目的一些配置以及项目包含文件的组织管理

  • Headers/myfirstwnd.h:主窗口类的头文件所在,其中包含了一个私有指针ui,在构造该类对象时将会指向一个和界面ui相关的类对象

    C++实践之Qt学习(三):使用QtCreator创建Qt项目_第11张图片

  • Sources/main.cpp:主函数文件,里面包含main函数,程序从这里启动
    C++实践之Qt学习(三):使用QtCreator创建Qt项目_第12张图片

  • Sources/myfirstwnd.cpp:主窗口类的源码文件,主窗口的代码实现所在
    C++实践之Qt学习(三):使用QtCreator创建Qt项目_第13张图片

  • Forms/myfirstwnd.ui:后缀为“.ui”的文件是可视化设计的窗体的定义文件,双击该文件将会打开设计页面,该设计页面是集成在Qt Creator中的Qt Designer,可以对窗口进行可视化设计。
    C++实践之Qt学习(三):使用QtCreator创建Qt项目_第14张图片

    • 该文件点击编辑后可以发现是通过XML格式进行设计的,但是有说明“只能在设计模式中编辑”,不要手动修改。
      C++实践之Qt学习(三):使用QtCreator创建Qt项目_第15张图片

关于类中的ui

如果按住CTRL后点击主窗口类头文件中的ui的类:
在这里插入图片描述
或者点击主窗口类的构造函数中初始化列表里给ui赋值的对象的类:
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第16张图片
将会跳转到一个新的类文件中,注意这里的类名虽然主类名一致,但是它的前面有一个UI::,表示它是该命名空间中的一个类:
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第17张图片
可以看到这个类是继承了Ui_MyFirstWnd的类,而这个Ui开头后面和主窗口类名一致的类又是什么呢?它实际上就是根据后缀名ui文件,在Qt设计器中进行了相关界面设计后自动生成的一个UI类,通过这个UI类,我们在主窗口代码里操作界面元素,例如获取编辑框的内容,设置控件上的值等等。

打开该了定义后将会打开一个以ui开头的h文件:
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第18张图片
类代码:
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第19张图片
这个UI类文件我们不需要手动修改,也不需要加到项目中,只需要通过设计器对窗口进行可视化设计即可,而我们则可以在代码里通过ui指针来访问界面控件。

注意:设计器内容变化时,该类代码不会立刻随着改变,需要构建项目时,才会变化,并且会提示是否需要加载修改后的内容,可以通过设置修改为编译时自动加载变化内容。
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第20张图片

帮助

C++实践之Qt学习(三):使用QtCreator创建Qt项目_第21张图片
帮助也可以在安装目录下找到Qt助手打开独立帮助对话框:C++实践之Qt学习(三):使用QtCreator创建Qt项目_第22张图片
推荐在独立窗口打开,如果直接在代码窗口打开,来回切换很不方便。
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第23张图片
默认该助手内字体为宋体,可以在编辑–首选项内修改字体显式(左侧区域对应字体设置下拉框里的应用程序,右侧内容区域对应于浏览器):
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第24张图片

构建路径

在构建项目之后,可以发现在项目目录的同级目录下创建了一个新的目录存放了目标产物:
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第25张图片
这个构建路径的具体生成规则在【工具】-【选项】中
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第26张图片

../%{JS: Util.asciify("build-%{CurrentProject:Name}-%{CurrentKit:FileSystemName}-%{CurrentBuild:Name}")}

各部分元素的意义如下:

  1. ../ 当前目录的父目录(这部分用来指定构建目录处在什么位置,其中当前目录是指当前工程目录下)
  2. build- 固定不变的字符,在目录名中原样显示
  3. %{CurrentProject:Name} 变量值,即当前的工程名
  4. - 固定不变的字符,在目录名中原样显示
  5. %{CurrentKit:FileSystemName} 变量值,当前构建套件名,比如使用的是桌面版的MinGW32位进行编译,Qt版本为5.14.2,则为Desktop_Qt_5_14_2_MinGW_32_bit
  6. - 固定不变的字符,在目录名中原样显示
  7. %{CurrentBuild:Name} 变量值,当前构建类型,比如是Debug还是Release

这里如果想要贴合C++项目习惯,可以设置为:

./%{CurrentBuild:Name} 
  1. ./ 表示当前目录(即工程目录下)

  2. %{CurrentBuild:Name} 表示构建类型

这样就会直接在当前项目内来创建Debug或者Release目录了。
需要注意:当项目移动后或者按照上面的设置之后,重新构建项目会发现依然在原目录中生成!其实只需要把项目中的.user删除重新构建即可!.user文件是打开工程时候新建的,但是有个前提,当已经存在这个文件,qt就不再重新创建,所以旧的工程更改路径失败。

使用资源

在GUI程序中,不可避免地将会使用各类资源,例如图片、音视频资源等,有这些资源,我们可以将普通的按钮设置成带图片的,一些标签也可以用图片来显示,还可以播放动图等。

为了方便的使用这些资源,我们需要使用Qt中的资源文件。

第一步,创建一个资源文件

在项目上右键,选择”add new“:
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第27张图片
然后在打开的对话框中选择Qt分类下的Qt资源文件:
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第28张图片
输入资源名称点击下一步继续:
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第29张图片
将会在项目下创建相应的qrc文件:
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第30张图片

第二步,添加资源

首先需要添加一个前缀,点击资源视图中的Add Prefix按钮,修改前缀名字(前缀主要是为了区分这些资源的作用,例如背景音乐资源文件,或者专门给按钮用的图片,或者专门用来做头像的图片等):
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第31张图片
然后点击Add Files按钮,添加需要的资源文件,这里需要注意几点:

1、资源文件名中如果有中文,会因为Qt的本身支持问题导致构建项目失败;

2、外部资源添加到资源文件后,在构建项目时会被编码添加到项目文件中,此时删除外部文件时,构建项目会出错,但是运行发布后的程序还是可以运行的,为了避免误操作和后续的修改,建议将资源文件都放在项目目录下;
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第32张图片

3、添加了文件后,上图中第一级是前缀设置的/imgs,图片中前面的/imgs是其存放的文件,要引用这几个资源,其路径是":/imgs/imgs/head1.png",而不是":/imgs/head1.png",这个在生成的qrc_res.cpp中可以看到;

4、如果觉得引用的资源路径名太长,可以给其设置一个别名:
C++实践之Qt学习(三):使用QtCreator创建Qt项目_第33张图片
在使用时就可以用":/imgs/head1"来代替了。

之后就可以使用这里的资源了。

发布程序

可以在QtCreator中通过点击执行按钮来运行编写的程序,不过如果想要将生成的可执行程序打包发布,还需要额外做一些处理。

此部分可以参考博客:qt生成的exe无法直接运行(缺少一些dll文件)

其中最核心的操作是:
在这里插入图片描述

你可能感兴趣的:(Qt)