Как создать подпроект с Qt?

Я собираюсь начать с большого приложения Qt, состоящего из меньших компонентов (группы классов, которые работают вместе). Например, может быть диалог, который используется в проекте, но должен быть разработан сам по себе, прежде чем быть интегрированным в проект. Вместо того, чтобы работать с ним в другой папке где-то, а затем копировать ее в основную папку проекта, могу ли я создать подпапку, предназначенную для этого диалога, а затем каким-то образом включить ее в основной проект?

Ответы

Ответ 1

Вот что я буду делать. Скажем, я хочу следующую иерархию папок:

/MyWholeApp

будет содержать файлы для всего приложения.

/MyWholeApp/DummyDlg/

будет содержать файлы для автономного диалогового окна, которые в конечном итоге станут частью всего приложения.

Я бы разработал автономное диалоговое окно и связанные классы. Я бы создал файл Qt-проекта, который будет включен. Он будет содержать только формы и файлы, которые в конечном итоге станут частью всего приложения.

Файл DummyDlg.pri, в /MyWholeApp/DummyDlg/:

# 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:

file WholeApp.pro, in/MyWholeApp/:

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

include(DummyDlg/DummyDlg.pri)

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

Конечно, файл Qt-Project выше очень упрощен, но показывает, как я включил автономное диалоговое окно.

Ответ 2

Да, вы можете отредактировать файл основного проекта (.pro), чтобы включить файл проекта вашего проекта.

Смотрите здесь

Ответ 3

Для Qt в Windows вы можете создавать библиотеки DLL для каждого подпроекта, который вы хотите. Нет проблем с использованием их из основного проекта (exe) после этого. Вы должны будете заботиться о зависимостях, но это не очень сложно.