Qt创建包含多个子项目以及项目之间如何调用

        在学习的过程中发现了一个问题,如果在开发一个项目时,需要将项目划分为几个板块,即子项目,在独立开发这些板块,当这些独立板块完成时,需要将其汇总成为一个项目,这是一个问题。

文章有点长,请耐心实践,本人已经测试过,没有什么问题,如果有,请读者私信我或者在评论区讨论一下。

        本片文章在网上搜索学习方法时,将学习的的过程给总结出来,以便于后面遗忘时复习。

        通常在使用C++的时候,一般解决办法时将其封装成为一个库,即lib文件,随即在其他的项目中调用即可解决,也便于代码的维护。

演示说明,本文章使用的演示环境为:Qt Creator 5.15.2 使用qmake进行演示

下面直接上演示过程:

一、创建项目

创建子项目我将选择两个子项目,一个子项目是我已经写好的小窗口,另一个子项目选择创建,当然你也可以选择两个项目都使用创建的方式;

(一)创建项目

打开Qt Creator 选择创建项目

创建一个项目,用于形成一个树形结构的项目

这里我选择了创建名为projectDemo的大项目名称,路径自行选择合适的位置

选择使用的编译器,这里我选择使用MinGW,因为这是我平时学习的时候使用的编译器,当然,如果你使用的是MSVC,也是可以的,不影响后续

箭头指向位置通常会选择Git用于跟踪和管理对文件的更改,但我这个demo演示,只用于演示,并不会做其他用处,所有就不选择了,使用默认项(无)

点击完成之后会出现下图:,当然,我们也可以从这里添加子项目,也可以先关闭他,鼠标右击项目,点击新子项目也会出现下图

(二)创建子项目

子项目类型可以根据你的需求去选择,这里我使用创建一个窗口程序,作为子项目

项目名称为demo01,路径自行选择

构建系统我选择qmake

下一步之后我选择类名为DemoWidget,基类为QWidget,并且添加UI文件。

下一步下一步

下一步,之后点击完成

创建第一个子项目成功

目录结构如下:

(三)导入项目

找到你要导入的项目,我想要导入的项目效果如图,这是一个简单的登陆页面,他是一个独立的项目,我想让这个项目在其他的项目中调用,所以我就选择导入项目,由第二步中创建的项目进行调用,当然你也可以选择创建项目形成这个效果:

这里我需要导入的子项目是project,将该项目移动到与第二步创建的demo01项目同级的文件夹中

即这个文件中

移动完成后的效果:

移动完成后,回到Qt Creator中,右键项目,注意不是子项目,是projectDemo这个项目,不是demo01这个子项目,点击 add Existing Projects..选择刚才拷贝的项目中的pro文件,点击打开,会自动添加到我们的项目试图中

如图:

项目创建好了,下面就进行最重要的一步,让子项目中产生联系

二、关联子项目

每一个程序都只能有一个程序入口,即只能有一个main文件,我们创建的项目中,每一个子项目都有一个main文件,所以我们需要删除一个main文件,,因为我需要在demo01这个项目中,调用project这个项目的文件,所以我选择删除被调用项目中的main文件,即删除project中的main.cpp文件

删除步骤,选择main.cpp文件,鼠标右键,点击Remove,点击确认即可

删除后的项目结构

基本的项目结构已经完成,下一步就是为project项目创建一个lib文件,这个lib文件在编译project后生成;

(一)创建.h文件,用于定义项目全局使用的宏和设置

1、在project中创建一个.h文件,即被调用项目中创建,并在该文件中添加下述代码,代码的作用我已经书写在注释中,注意不要完全拷贝,PROJECT需要根据你的项目来修改

#ifndef PROJECT_GLOBAL_H
#define PROJECT_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(PROJECT_LIBRARY)
#  define PROJECT_EXPORT Q_DECL_EXPORT
#else
#  define PROJECT_EXPORT Q_DECL_IMPORT
#endif
#endif // PROJECT_GLOBAL_H

2、在project.pro文件中添加代码

在pro文件中添加这三行代码,添加完成之后记得保存该文件,否则不会生效

TARGET = project
TEMPLATE = lib
DEFINES += project_LIBRARY

(二)运行项目

添加完成之后右键该项目,点击构建,让其生成lib文件,即库文件

(三)添加库

右键需要调用这个库文件的项目,即demo01子项目,点击添加库,选择内部库

包含路径选择project项目的路径,即被调用项目的路径即可,点击下一步

   

点击完成

现在demo01子项目中就可以添加project子项目中的头文件了

三、运行项目

将在demo01子项目中调用project中的文件,这里我选择在main文件中调用,导入头文件后,创建对象,直接运行

运行效果与直接运行project子项目一样

总结

        将多个项目联系起来,通过将其他项目通过创建静态库或者动态库的形式,能够让其他的项目能够调用,上述内容,也是使用了这个方法。

        文章结束了,需要上述登陆代码的朋友可以私信我,也可以评论留言,这个登陆页面时在写期末作品的时候写的一个模板,可以直接利用,有些功能没有实现,需要的朋友可以自行实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值