Как мне создать подпроект с помощью Qt?

StackOverflow https://stackoverflow.com/questions/61405

  •  09-06-2019
  •  | 
  •  

Вопрос

Я собираюсь приступить к созданию большого приложения 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).Вам придется позаботиться о зависимостях, но это не очень сложно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top