2008-09-14 18 views
13

Ich bin dabei, auf einer großen Qt-Anwendung zu starten, die aus kleineren Komponenten besteht (Gruppen von Klassen, die zusammenarbeiten). Zum Beispiel könnte es einen Dialog geben, der im Projekt verwendet wird, aber selbst entwickelt werden sollte, bevor er in das Projekt integriert wird. Anstatt in einem anderen Ordner irgendwo zu arbeiten und es dann in den Hauptprojektordner zu kopieren, kann ich einen Unterordner erstellen, der diesem Dialog gewidmet ist, und ihn dann irgendwie in das Hauptprojekt einbinden?Wie mache ich ein Unterprojekt mit Qt?

Antwort

18

Hier ist, was ich tun würde. Nehmen wir an, ich möchte folgende Ordnerhierarchie:

/MyWholeApp 

enthält die Dateien für die gesamte Anwendung.

/MyWholeApp/DummyDlg/ 

enthält die Dateien für die eigenständige Dialogbox, die eventuell Teil der gesamten Anwendung sein wird.

Ich würde das eigenständige Dialogfeld und die zugehörigen Klassen entwickeln. Ich würde eine Qt-Projektdatei erstellen, die enthalten sein wird. Es enthält nur die Formulare und Dateien, die letztendlich Teil der gesamten Anwendung sein werden.

Datei DummyDlg.pri, in/MyWholeApp/DummyDlg /:

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

Das obige Beispiel ist sehr einfach. Sie können bei Bedarf weitere Klassen hinzufügen.

das Standalone-Dialogfeld zu entwickeln, würde ich dann eine Qt-Projektdatei zu diesem Dialog gewidmet erstellen:

Datei DummyDlg.pro, in/MyWholeApp/DummyDlg /:

TEMPLATE = app 
DEPENDPATH += . 
INCLUDEPATH += . 

include(DummyDlg.pri) 

# Input 
SOURCES += main.cpp 

Wie Sie können siehe, diese PRO-Datei einschließlich der PRI-Datei oben erstellt, und fügt eine zusätzliche Datei (main.cpp), die den grundlegenden Code für die Ausführung des Dialogfeldes als eigenständiges enthalten:

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

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

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

Dann dieses Dialogfeld auf die gesamte Anwendung schließen Sie eine Qt-Projektdatei erstellen müssen:

Datei 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 

Natürlich das Qt-Projekt Datei oben ist sehr simpel, aber zeigt, wie ich das eigenständige Dialogfeld einfügte.

0

Für Qt unter Windows können Sie DLLs für jedes gewünschte Unterprojekt erstellen. Kein Problem, sie danach aus dem Hauptprojekt (exe) zu verwenden. Sie müssen auf Abhängigkeiten aufpassen, aber es ist nicht sehr schwierig.

1

Ja, Sie können Ihre Hauptprojektdatei (.pro) so bearbeiten, dass sie die Projektdatei Ihres Unterprojekts enthält.

See here