如何使用Qt创建子项目?

时间:2020-03-05 18:53:00  来源:igfitidea点击:

我将从一个大型的Qt应用程序开始,该应用程序由较小的组件(一起工作的类组)组成。例如,项目中可能会使用一个对话框,但是在集成到项目中之前应先自行开发。不用在某个位置的另一个文件夹中进行处理,然后将其复制到主项目文件夹中,我可以创建一个专用于该对话框的子文件夹,然后以某种方式将其合并到主项目中吗?

解决方案

回答

对于Windows上的Qt,我们可以为所需的每个子项目创建DLL。之后,从主项目(exe)使用它们就没有问题。我们必须照顾好依赖关系,但这并不是很困难。

回答

是的,我们可以编辑主项目(.pro)文件以包括子项目的项目文件。

看这里

回答

这就是我要做的。假设我想要以下文件夹层次结构:

/MyWholeApp

将包含整个应用程序的文件。

/MyWholeApp/DummyDlg/

将包含独立对话框的文件,该对话框最终将成为整个应用程序的一部分。

我将开发独立对话框和相关类。我将创建一个Qt项目文件,该文件将包含在内。它仅包含最终将成为整个应用程序一部分的表单和文件。

在/ MyWholeApp / DummyDlg /中的文件DummyDlg.pri:

# Input
FORMS += dummydlg.ui
HEADERS += dummydlg.h
SOURCES += dummydlg.cpp

上面的例子很简单。我们可以根据需要添加其他类。

要开发独立对话框,我将创建一个专用于此对话框的Qt项目文件:

文件DummyDlg.pro,位于/ MyWholeApp / DummyDlg /中:

TEMPLATE = app
DEPENDPATH += .
INCLUDEPATH += .

include(DummyDlg.pri)

# Input
SOURCES += main.cpp

如我们所见,此PRO文件包括上面创建的PRI文件,并添加了一个添加文件(main.cpp),该文件将包含用于独立运行对话框的基本代码:

#include <QApplication>
#include "dummydlg.h"

int main(int argc, char* argv[])
{
    QApplication MyApp(argc, argv);

    DummyDlg MyDlg;
    MyDlg.show();
    return MyApp.exec();
}

然后,要将此对话框包含到整个应用程序中,我们需要创建一个Qt-Project文件:

在/ MyWholeApp /中的文件WholeApp.pro中:

TEMPLATE = app
DEPENDPATH += . DummyDlg
INCLUDEPATH += . DummyDlg

include(DummyDlg/DummyDlg.pri)

# Input
FORMS += OtherDlg.ui
HEADERS += OtherDlg.h
SOURCES += OtherDlg.cpp WholeApp.cpp

当然,上面的Qt-Project文件非常简单,但是显示了我如何包含独立对话框。