Вопрос
Я собираюсь приступить к созданию большого приложения Qt, которое состоит из более мелких компонентов (групп классов, которые работают вместе).Например, может существовать диалоговое окно, которое используется в проекте, но должно быть разработано самостоятельно, прежде чем быть интегрировано в проект.Вместо того, чтобы работать над этим где-то в другой папке, а затем копировать его в основную папку проекта, могу ли я создать подпапку, предназначенную для этого диалогового окна, а затем каким-то образом включить ее в основной проект?
Решение
Вот что бы я сделал.Допустим, мне нужна следующая иерархия папок :
/MyWholeApp
будет содержать файлы для всего приложения.
/MyWholeApp/DummyDlg/
будет содержать файлы для автономного диалогового окна, которое в конечном итоге станет частью всего приложения.
Я бы разработал отдельное диалоговое окно и связанные с ним классы.Я бы создал файл Qt-project, который будет включен.Он будет содержать только формы и файлы, которые в конечном итоге станут частью всего приложения.
Файл 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 :
файл WholeApp.pro, в /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 очень упрощен, но показывает, как я включил автономное диалоговое окно.
Другие советы
Да, вы можете отредактировать файл вашего основного проекта (.pro), чтобы включить в него файл проекта вашего подпроекта.
Для Qt в Windows вы можете создавать библиотеки DLL для каждого нужного вам подпроекта.После этого нет проблем с использованием их из основного проекта (exe).Вам придется позаботиться о зависимостях, но это не очень сложно.