Qt快速入门之三:Qt程序编译和源码详解

一、编写 Hello World Gui程序

Hello World程序就是让应用程序显示“Hello World”字符串。这是最简单的应用,但却包含了一个应用程序的基本要素,所以一般使用它来演示程序的创建过程。本节要讲的就是在Qt Creator中创建一个图形用户界面的项目,来生成一个可以显示“Hello World”字符串的程序。

1.1 新建 Qt Gui 应用

(1)运行 QtCreator,打开“文件一新建文件或项目”菜单项(也可以直接按下 Ctrl+N 快捷键),在选择模板页面选择 Application 中的“ Qt Widgets Application”一项,然后单击“Choose”按钮,如下图所示。

1075214-20181213155757884-1073203163.jpg

(2)输入项目信息。在“项目介绍和位置”页面输入项目的名称为 helloworld,然后单击创建路径右边的“浏览”按钮选择源码路径。如果选 中了这里的“设置默认的项目路径”,那么以后创建的项目会默认使用该目录,如下图所 示。单击“下一步”进入下个页面。(注意:项目名和路径中都不能出现中文。)

1075214-20181213160438860-1317670120.png

(3)选择构建套件。下面默认为 Debug 版本和 Release 版本分别设置了两个不同的目录,如下图所示。然后单击“下一步”。

1075214-20181213160648576-1531475338.png

(4)输入类信息。在“类信息”页面中创建一个自定义类。这里设定类名为 HelloDialog, 基类选择 QDialog,表明该类继承自 QDialog 类,使用这个类可以生成一个对话框界面。这 时下面的头文件、源文件和界面文件都会自动生成,保持默认即可,如下图所示。然后单 击“下一步”。

1075214-20181213160834952-481852958.png

(5)设置项目管理。在这里可以看到这个项目的汇总信息,还可以使用版本控制系统,这个 项目不会涉及,所以可以直接单击“完成”按钮完成项目的创建。如下图所示。

1075214-20181213160930300-1576356449.png


1.2 文字说明与界面设计

项目建立完成后会直接进入编辑模式。界面的右边是编辑器,可以阅读和编辑代码。如果觉得字体太小,可以使用快捷键Ctrl + “+”(即同时按下Ctrl键和+号键)来放大字体,使用Ctrl + “-”(减号)来缩小字体,也可以使用Ctrl键+鼠标滚轮来缩放字体。使用Ctrl+0(数字)可以使字体还原到默认大小。在左边侧边栏,罗列了项目中的所有文件,如下图所示。

1075214-20181213161823753-1604635763.jpg

左边侧边栏各个文件的说明如下表所示。

表2-1 项目目录中各个文件说明

文件说明
helloworld.pro该文件是项目文件,其中包含了项目相关信息
helloworld.pro.user该文件中包含了与用户有关的项目信息
hellodialog.h该文件是新建的 hellodialog 类的头文件
hellodialog.cpp该文件是新建的 hellodialog 类的源文件
main.cpp该文件中包含了 main() 主函数
hellodialog.ui该文件是 Qt Designer 界面对应的界面文件


在 Qt Creator 的编辑模式下双击项目文件列表中界面文件分类下的 heliodialog.ui 文件,这时便进入了设计模式,如下图所示。可以看到设计模式由以下几部分构成:

1075214-20181213164218586-1097175756.jpg

① 主设计区。就是下图中的中间部分,这里主要用来设计界面以及编辑各个部件的属性。
② 部件列表窗口(Widget Box)。这里分类罗列了各种常用的标准部件,可以使用 鼠标将这些部件拖人主设计区中,放到主设计区中的界面上。
③ 对象查看器(Object Inspector)。这里列出了界面上所有部件的对象名称和父 类,而且以树形结构显示了各个部件的所属关系。可以在这里单击对象来选中该部件。
④ 属性编辑器(Property Editor)。这里显示了各个部件的常用属性信息,可以在这里更改部件的一些属性,如大小、位置等。这些属性按照从祖先继承的属性、从父类继承的属性和自己的属性的顺序进行了分类。
动作(Action)编辑器与信号和槽编辑器。在这里可以对相应的对象内容进行编辑。
常用功能图标。单击最上面的侧边栏中的前4个图标可以进人相应的模式,分别是窗口部件编辑模式(这是默认模式)、信号/槽编辑模式、伙伴编辑模式和Tab顺序编辑模式。

从部件列表中找到 Label (标签)部件,然后按着鼠标左键将它拖到主设计区的界面上, 再双击它进入编辑状态后输入“Hello World丨你好Qt!”字符串。如图2-8所示。 这里顺便说一下,Qt Creator的设计模式中有几个过滤器,就是写着“Filter”的行输人框。例如在部件列表窗口上的过滤器中输人“Label”就会快速定位到Label部件了,而不用自己再去査找。

然后就可以使用快捷键 Ctrl + R 或者通过按下左下角的运行按钮来运行程序。



二、helloWorld程序源码详解

第一步,新建空项目。打开Qt Creator,并新建项目,项目名称为_helloworld。

第二步,往项目中添加main.cpp文件。

第三步,编写源代码。在main.cpp中添加如下代码:

#include <QApplication>
#include <QDialog>
#include <QLabel>
int main(int argc, char * argv[])
{
    QApplication a(argc, argv);
    QDialog w;
    QLabel label(&w);
    label.setText(QObject::tr("hello world! 你好,世界!"));
    w. show();
    return a. exec();
}
  • 前 3 行代码是头文件包含。在 Qt 中每一个类都有一个与其同名的头文件,因为后面用到了 QApplication、QDialog 和 QLabel 这 3 个类,所以这里要包含这些类的定义。
  • 第 4 行就是在 C++ 中最常见到的 main() 函数,它有两个参数,用来接收命令行参数
  • 第 6 行新建了 QApplication 类对象,用于管理应用程序的资源,任何一个 Qt GUI 程序都要有一个 QApplication 对象。因为 Qt 程序可以接收命令行参数,所以它需要 argc 和 argv 两个参数。
  • 第 7 行新建了一个 QDialog 对象, QDialog 类用来实现一个对话框界面。
  • 第 8 行新建了一个 QLabel 对象,并将 QDialog 对象作为参数,表明了对话框是它的父窗口,也就是说这个标签放在对话框窗口中。
  • 第 9 行给标签设置要显示的字符。
  • 第 10 行让对话框显示出来。
  • 第 11 行让 QApplication 对象进入事件循环,这样当 Qt 应用程序在运行时便可以接收产生的事件,例如单击和键盘按下等事件。

编译运行程序,效果跟上面类似。


下面介绍两个实用功能:

  • 第一个是快速查看。将鼠标指针放到一个类名或函数上,便会出现一个提示框显示其简单的介绍,而此时按下 F1 键就可以快速打开其帮助文档。
  • 第二个是快速跳转。按下 Ctrl 的同时,将鼠标指针放到一个头文件类名或函数上,可以实现“跳转”功能。




三、项目模式和项目文件介绍

3.1 项目模式介绍

按下快捷键 Ctrl + 5 ,或者单击“项目”图标,都可以进人项目模式。项目模式分为“构建设置’、“Active Project”、“Build & Run”、“Project Settings”这几个页面。在构建设置页面可以设置要构建的版本,如Debug版或是Release版本,还可以设置所使用的Qt版本。这里有一个Shadow build选项,作用是将项目的源码和编译生成的文件分别存放。将编译输出与源代码分别存放是个很好的习惯,尤其是在使用多个Qt版本进行编译时更是如此。


3.2 项目文件介绍

下面来看一下上面建立的 helloWorld 项目的 helloWorld.pro 文件的内容:

1 #----------------------------------------------------------------------   
2 #
3 # Project created by QtCreator 2018-12-13T16:37:02
4 #
5 #----------------------------------------------------------------------       
6
7   QT  + = core gui
8
9   greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
10
11  TARGET = helloworld 
12  TEMPLATE = app
13
14  DEFINES += QT_DEPRECATED_WARNINGS
15
16  CONFIG += c++11
17
18  SOURCES + = main. cpp\
19                      hellodialog.cpp
20
21  HEADERS + = hellodialog.h
22      
23  FORMS   + = hellodialog.ui
24      
25  RC_FILE + = myico. rc
  • 第1〜5行是注释信息,说明这个文件生成的时间。
  • 第7行表明了这个项目使用的模块。core模块包含了 Qt 非图形用户界面的核心功能,其他所有模块都依赖于这个模块;而gui模块扩展了 core 模块的图形界面功能。也就是说,如果不需要设计图形界面的程序,那么只需要core模块就可以了,但是如果涉及图形界面,那么就必须包含 gui 模块。其实所谓的模块,就是很多相关类的集合,比如所有与图形界面有关的类都在gui模块中,读者可以在 Qt 帮助中査看 QtCore Module 和 QtGui Module 关键字。
  • 第9行这行代码的意思是,如果QT主版本大于4(也就是说当前使用的是Qt5或者更高版本),则需要添加widgets模块。也可以直接用“QT+=widgets”,但这样可以保持与QT4的兼容性,因为QT4用的是QtGui模块,而Qt5里不再用QtGui模块,而是使用QtWidgets模块。
  • 第11行是生成的目标文件的名称,就是生成的exe文件的名字,默认的是工程的名字, 当然也可以在这里改为别的名字。
  • 第12行使用app模板,表明这是个应用程序。
  • 第14行表明,如果使用已被标记为已弃用的Qt的任何功能,则会使您的编译器发出警告。
  • 第16行表明,使工程支持C++11标准。
  • 第18、21和23行分别是工程中包含的源文件、头文件和界面文件。
  • 第25行就是添加的应用程序图标的文件。这里这些文件都使用了相对路径,因为都在项目目录中,所以只写了文件名。

这里还要提一下那个在项目文件夹中与.pro文件一起生成的.pro. user文件,它包含了本地构建信息,包含Qt版本和构建目录等。可以用记事本或者写字板将这个文件打开査看其内容。

而如果要打开别人的项目文件, 但里面包含了 user文件,那么这时Qt Creator会弹出如下图所示的提示窗口,这时应该选择“否”,然后就可以选择自己的Qt版本了。但是如果选择了“是”,那么打开的程序可能无法编译,这时就需要打开项目模式,然后在构建设置中选择自己的Qt版本。当然简单的方法就是在打开项目之前仔细检查一遍.pro. user文件,以确认是否影响我们编译运行项目,是否可使用自动建立的.pro. user文件。如果确认没有影响 (一般桌面程序都没有影响),可以先将其删除,因为它以后还会被自动建立的。

1075214-20181214151102018-611811616.png


转载于:https://www.cnblogs.com/linuxAndMcu/p/10114193.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值