Qt 创建包含多个项目的工程以及各项目之间的调用

118 篇文章 8 订阅

QT不同项目之间怎么调用其他项目里的类对象  (***)


Qt 创建包含多个项目的工程以及各项目之间的调用


Qt:建立带有子项目的项目,以及子项目之间的调用

==================================

QT不同项目之间怎么调用其他项目里的类对象  (***)

以下方法解决的问题: 假设有A/B/C三个项目, A中有一个类,B/C都有用到, 怎么直接调用?而不是用笨方法慢慢的复制粘贴.

重点在.pri分文件处理上, 步骤如下:

一、首先把这个共同要使用到的类弄成分文件管理;

同一个项目里,分文件管理的方法:

1、在文件夹里面创建出一个文件夹,与类名相同比较好辨认(但是不重要,你随便取一个名字都可以)。我这里的文件夹名以xml为例

2、在xml文件夹里面新建一个与文件夹同名的.pri文件,即xml.pri(修改后缀名即可)

3、分两种情况,

      a.你的类还没有创建出来的话,这种情况就简单了,直接运行项目之后会项目目录里出现xml文件夹,如下图

然后直接在该目录下直接新建文件即可

最后记得在.pro文件里加上这句话

      b.你的类文件已经创建好了的情况。

1 把.h/.cpp手动移到xml文件夹里

2 在.pro文件里加上

3 在生成的目录xml的.pri加上以下三句话

 以上,我们在不同的项目里面要用到的共同类,分文件管理已经处理好了。

二、最后在其他项目里面的.pro文件里面加上这句话即可

这里解释一下这句话的含义两个…就是表示返回上一级目录哦!

首先我们在不同的项目之间调用同一个类,前提条件还是要把这些项目放在同一个文件夹里面处理。其实核心思想还是.pri,并没有很高深。

给大家看下我实例的文件夹层级

 相信看到这里的小伙伴,是不是已经懂了。反正就是这么弄的,并没有特别高深。
或许你会感兴趣!

QT如何修改工程(项目)名

————————————————
版权声明:本文为CSDN博主「Licht小粉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ligare/article/details/122851098


Qt:建立带有子项目的项目,以及子项目之间的调用

总结:

1.  一个工程中, 只能有一个 主项目, 其他子项目都是c++ lib 库项目

2. 调用子项目前, “主项目”  需要添加 “子项目” 

3. 子项目要能被调用, 必须添加 外部引用, 每个项目不一样,根据自己项目做修改(我在文中专门用黄色做了标注)

4. 子项目添加窗体时, 需要修改子项目的 pro文件,添加窗体必要的引用  (这个必须修改,不然报错)

5. 可以一个个工程单独构建,然后在运行整个工程。如果构建出现异常,把整个工程的构建文件删了,重新一个个构建。(很多时候,都是makefile导致的问题

6. 调用子窗体( widget 窗体) ,  在 new 的时候不要加 “this”。  

————————————————
版权声明:本文为CSDN博主「绿叶白墙」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chen1231985111/article/details/126251292

Qt 创建包含多个项目的工程以及各项目之间的调用

在用QT做一个包含许多个小项目的大项目时,遇到了无法把多个项目合并到一个Pro的问题,后来经过艰苦尝试,终于可以在一个大项目下包含许多小项目了。但同时各个项目之间的调用又出现了问题,目前已解决。下面就把我的经验分享给大家。

一、创建包含多个小项目的大项目
1、第一种情况:在新建的empty project 下创建新的子项目
2、第二种情况:在新建的empty project 下添加已存在的项目
3、第三种情况:在已经编好的项目下创建新的子项目
4、第四种情况:在已经编好的项目下添加已存在的项目


1、在新建的empty project 下创建新的子项目。可以分为以下几步:
(1)文件 → 新建文件和项目 → 其他项目 → empty qmake project
(2)填写工程名、创建路径等信息。创建完成后如下图所示。(我创建的大项目叫untitled)

 (3)打开生成的Pro文件 → 手动输入TEMPLATE = subdirs

(4)右键工程文件夹 → 新子项目 → 选择你想创建的项目

(这里我创建一个widget,子项目名字叫untitled1)
创建完成后如下图所示:

 2、在新建的empty project 下添加已存在的项目,步骤如下:
(1)这里我们继续在1已经建好的empty project下添加,创建empty project的步骤和1一样。
(2)将你要添加的子项目的文件夹移到创建的大项目文件夹下,和大项目的Pro文件存储在一起。如下如所示(SignalAndSlot是我要添加的子项目):

 (3)右键工程文件夹 → add existing projects(QT版本5.14之前的版本好像没有这个选项,这个我也没有办法)→ 在弹出的窗口中选择你要添加的项目的Pro文件(我选中的是SignalAndSlot.Pro)
添加好之后如下图所示:

 至此,第一种和第二种情况就介绍完毕了,但是,不管是新建的还是添加的子项目,在运行时还是独立的。而且每一个子项目下都有一个main.cpp,但是程序的入口只能有一个

假设我现在要在新建的子项目untitled1中调用添加的子项目SignalAndSlot,那么就删除掉SignalAndSlot下的main.cpp。

调用的步骤如下:

(1)删除SignalAndSlot下的main.cpp
(2)为SignalAndSlot创建SignalAndSlot_global.h头文件

右键SignalAndSlot → addnew → c++ → c++ header file

 (3)在SignalAndSlot_global.h中输入以下代码,注意代码中的SIGNALANDSLOT要根据自己的项目名称做改变。

#ifndef SIGNALANDSLOT_GLOBAL_H
#define SIGNALANDSLOT_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(SIGNALANDSLOT_LIBRARY)
#  define SIGNALANDSLOT_EXPORT Q_DECL_EXPORT
#else
#  define SIGNALANDSLOT_EXPORT Q_DECL_IMPORT
#endif

#endif // SIGNALANDSLOT_GLOBAL_H

(4)在SignalAndSlot.Pro里面增加如下代码

1 TARGET = SignalAndSlot
2 TEMPLATE = lib
3 DEFINES += SignalAndSlot_LIBRARY

(5)右键untitled1 → 添加库 → 内部库 → 下一步 → 完成

添加完成之后untitled1.Pro内会自动生成编译设置和路径代码,如下所示:

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../SignalAndSlot/release/ -lSignalAndSlot
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../SignalAndSlot/debug/ -lSignalAndSlot
else:unix: LIBS += -L$$OUT_PWD/../SignalAndSlot/ -lSignalAndSlot

INCLUDEPATH += $$PWD/../SignalAndSlot
DEPENDPATH += $$PWD/../SignalAndSlot

这样,untitled1就能调用SignalAnGSlot下的函数了。但是要注意只能调用SignalAnGSlot的Pbulic下面的函数。例如我要调用SignalAnGSlot下面的student类下面的函数。

student.h如下所示(注意我调用的aaa函数在student.h中声明时前面加了static关键字,这是它能被调用的关键):

#define STUDENT_H

#include <QObject>

class Student : public QObject
{
    Q_OBJECT
public:

    explicit Student(QObject *parent = nullptr);

    void  treat();
    void  treat(QString foodName);
    static void aaa();
signals:

//早期的Qt版本必须写到public slot 下,高级版本可以写到Public或者全局下
//返回值是void,需要声明也需要实现
//可以有参数,可以发生重载
};

#endif // STUDENT_H

untitled1的main.cpp中这样写:

#include "widget.h"
#include "student.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    Student::aaa();
    Student();
    return a.exec();
}

————————————————
版权声明:本文为CSDN博主「蝈蝈(GuoGuo)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/delphigbg/article/details/127700113

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt多窗体源码框架实例是Qt框架下的一种多窗体应用程序设计方式。它可以在一个应用程序中同时打开多个窗体,通过相互之间的交互,实现各种应用功能。Qt多窗体源码框架实例可以应用于各种类型的应用程序开发中,如图形界面开发、游戏开发等。 在Qt框架下使用多窗体源码框架实例,首先需要设计应用程序的主窗体。主窗体包括菜单栏、工具栏、状态栏以及其他需要显示的窗体部件。在主窗体设计完成后,可以开始设计其他窗体,如弹出窗口、对话框等。 在多窗体源码框架实例中,窗体之间的交互主要通过信号和槽函数完成。在窗体之间传递参数时,可以使用信号和槽函数的参数列表进行传递。此外,可以使用Qt的事件机制来实现窗体之间的交互。 在编写多窗体应用程序源码时,需要注意一些细节问题。例如,在创建新的窗体时,需要对新窗体进行初始化操作,如设置窗体大小、标题、样式等属性。此外,还需要在主窗体中管理所有打开的窗体,确保程序的正常运行。 总之,Qt多窗体源码框架实例是一种非常常见的应用程序设计方式,它可以帮助开发人员快速构建功能丰富的应用程序。在实现多窗体应用程序的过程中,需要掌握Qt框架的基本知识,熟悉信号和槽函数的使用方法,以及一些常用的控件和布局方式。 ### 回答2: Qt是一个跨平台的图形用户界面开发工具,可以用它来构建多窗体的应用程序。Qt多窗体源码框架实例可以通过以下方法实现。 首先,创建一个Qt应用程序项目,并在项目中添加多个窗体。每个窗体可以使用Qt Designer进行设计。然后,创建一个主窗体,作为应用程序的入口点,并在该窗体中添加菜单栏和工具栏。在菜单栏中添加“文件”菜单,包括“打开”、“保存”和“退出”菜单项。在工具栏中添加相应的工具按钮。 接下来,为菜单栏和工具栏中的每个菜单项和工具按钮添加相应的槽函数。在打开菜单项和工具按钮的槽函数中,打开一个文件对话框,允许用户选择需要打开的文件。在保存菜单项和工具按钮的槽函数中,保存当前窗体中的数据到文件。在退出菜单项和工具按钮的槽函数中,关闭应用程序。可以使用QMessageBox在退出前提示用户是否保存未保存的数据。 在主窗体中添加QTabWidget控件,可以在其中添加多个窗口。每个窗口可以是前面设计的窗体之一。当用户选择“打开”文件时,可以根据文件类型打开相应的窗体,并将其添加到QTabWidget中。可以使用QFileDialog类来打开文件对话框。 最后,在Qt应用程序中添加任何其他必要的功能或组件,并根据需要重复以上步骤。在Qt开发多窗体应用程序的框架实例就这样实现了。 ### 回答3: Qt多窗体源码框架实例是一种基于Qt框架开发的应用程序,它可以创建多个窗口并在窗口之间进行切换和交互。这种框架通常由以下几个部分组成:主窗口、窗口、界面设计和事件处理。 主窗口是整个程序的主要界面,它可以包含菜单栏、工具栏、状态栏等元素,也可以包含一个或多个窗口。窗口是主窗口的元素,它们可以包含文本框、按钮、标签等控件,用来展示和操作数据。其中,主窗口和窗口都需要进行界面设计,在Qt中可以使用Qt Designer来进行界面设计。 为了让主窗口和窗口之间进行交互,需要进行事件处理。事件处理可以通过信号槽机制来实现。信号槽机制是Qt框架提供的一种事件驱动的编程模式,它可以将信号和槽函数连接起来,当信号触发时,槽函数就会执行相应的操作。这样可以实现主窗口对窗口的控制和窗口对主窗口的反馈。 在实际应用中,Qt多窗体源码框架可以被用于开发各种应用程序,比如图形界面编辑器、数据管理系统等。通过这种框架,可以实现界面美观、交互丰富、操作简便的应用程序,提高用户的使用体验和工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值