引言
----------------------------------------------------------------------------------------------------------------------
前几天,在使用Qt编程时,为项目增加了几个ui文件。偶然看一下源代码目录,发现源代码目录下的临时文件和临时目录太多了,简直杂乱不堪,虽然我们的代码是通过svn管理的,提交时有过滤设置,这些临时文件不会被入库,但是有时候需要备份一下源代码目录并打包,如果带着这么多临时文件(文件尺寸还是非常大的),那可太不方便了。所以今天我们就讲一下该如何通过pro文件的配置来整理源代码目录。
正文
----------------------------------------------------------------------------------------------------------------------
先不忙,我们顺便讲一下为项目添加界面(ui)的方法。大概分为四步:
1, 使用designer绘制ui文件并保存。
2, 编写ui的派生类。
3, 将相关文件添加到pro。
4, 使用派生类
我们分步骤讲解。
第一步,使用designer绘制某对话框资源文件(.ui),请注意,对话框类名:CDialogBase,ui文件名:dialogbase.ui。
这两个名称请仔细记下,因为后面会用到。
第二步,我们编写ui的派生类:
代码清单:
请注意上文中,#include "ui_dialogbase.h"。
该头文件就用到了我们刚才保存界面文件时的文件名” dialogbase.ui”,Qt的uic命令将该ui文件转换为ui头文件:“ui_dialogbase.h”,即 “ui_” 加上”dialogbase”共同拼接成了”ui_dialogbase.h”。
在class CDialog的定义处,我们编写了多重派生,第一个基类是Qt的QDialog,因为我们在designer中绘制时就是用的QDialog,第二个类看着是否有些面熟?答对了,我们刚才要求大家记住的类名称就是CDialogBase,而Qt在使用uic命令转换时会为对话框自动生成一个命名空间Ui,这个基类CDialogBase就在该命名空间内部定义,所以,我们第二个基类是:Ui::CDialogBase。
另外,请大家一定要注意,把Qt的基类写在前面,原因是:如果我们的CDialog需要使用Q_OBJECT宏,该宏展开时会用到Qt的基类(QObject)的一些接口,而编译器认为这些接口只能从第一个基类中查找。所以,请把Qt的基类写在前面。
下面给出CDialog的实现文件:dialog.cpp:
代码清单:
dialog.cpp比较简单,我们不做过多讨论,唯一需要注意的一点就是在构造函数中一定要调用setupUi(this);否则界面无法正常显示。
第三步,将相关文件添加到pro。我们目前添加了一个界面文件(dialogbaes.ui),添加了CDialog类的定义(.h)和实现文件(.cpp)。那么我们把他们添加到pro:
代码清单:
上述代码中,FORMS配置项用来描述项目中用到的ui文件,HEADERS和SOURCES两个配置项在前面章节介绍过。如果要使用界面,请确保QT+=widgets正确配置。
第四步,我们在代码中使用CDialog。我们需要先包含CDialog的头文件(dialog.h),然后在代码中定义CDialog的对象,然后调用其接口:
代码清单:
至此我们为项目添加界面的工作就结束了。
下面我们切入正题,通过pro来整理一下目录。
为了以后进行产品化开发,我们这里引入环境变量,pro中的所有路径都通过环境变量来间接设置。我们引入一个“TRAINDEVHOME”的环境变量,它指向我们代码的src的上级目录。这样,代码的目录结构如下:
TRAINDEVHOME
------bin
------obj
------src
其中bin 、obj、src都是TRAINDEVHOME的子目录。
在pro中使用环境变量的语法:$$(环境变量)。
比如:$$(TRAINDEVHOME)
代码清单:
在上述pro的配置中,OBJECTS_DIR是临时文件目录,我们将其设置到obj下对应的子目录。
DESTDIR是目标文件存放目录,就是最终生成的exe存放目录,我们将其放置到TRAINDEVHOME的bin目录。
Qt的moc和uic命令生成的临时文件分别放置到OBJECTS_DIR下面的moc和ui子目录。
每次修改pro之后,请大家再重新执行qmake以便更新相应的Makefile文件,如果需要更新VisualStudio的IDE中的项目文件,则需要执行qmake –tp vc。
然后,就可以重新编译程序了。
结语
----------------------------------------------------------------------------------------------------------------------
本节课程中,我们讲了为项目添加ui文件的过程,简单汇总知识点如下:
*. 如果需要使用界面(ui),pro中务必添加:
QT +=widgets
*. 派生类CDialog头文件中, 包含ui头文件的拼写规则和两个基类的顺序以及拼写。
#include "ui_dialogbase.h" // 头文件名称来自: dialogbase.ui ---> ui_dialogbase.h
class CDialog : public QDialog, public Ui::CDialogBase
*. 派生类的构造函数中一定要调用setupUi(this);
*. 在pro中使用环境变量,通过引用环境变量设置相关目录。
*. 环境变量在使用时应该用下列语法:
$$(环境变量)
*. MOC_DIR:用来存放qt的moc命令生成的临时文件。
*. UI_DIR:用来存放qt的uic命令生成的临时文件。当项目中包含.ui文件时需要用到。
*. FORMS:用来描述项目中包含的.ui文件列表
OK,总结就到这里,祝大家工作愉快!
---------------------------------------------------------------------------------------------------------------------
《Qt入门与提高-GUI产品开发》目录
上一节:KS02-01 通过简单exe介绍pro基本配置
下一节:KS02-03 加点料-增加一张图片
原文:https://www.cnblogs.com/baizy77/p/11436205.html