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/ -lSignalAndSlotINCLUDEPATH += $$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