2013-01-30 14 views
6

Zastanawiam się, jak używać projektu QT w innym w QTCreator. Utworzyłem subdirs projekt testowy z tej hierarchii:QTCreator: Użyj projektu qt w innym

MainProject 
    MainProject.pro 
    ConsoleSubProject 
    ConsoleSubProject.pro 
    main.cpp 
    firstclass.hpp 
    firstclass.cpp 
    GuiSubProject 
    GuiSubProject.pro 
    main.cpp 
    mainwindow.hpp 
    mainwindow.cpp 

Chciałbym użyć klasy „Firstclass” (ConsoleSubProject) w GuiSubProject. Aby to zrobić, Dodałem tę linię w GuiSubProject.pro:

include(../ConsoleSubProject/ConsoleSubProject.pro) 

Kiedy starałem się zbudować projekt, to daje mi błędy:

MainProject/GuiSubProject/mainwindow.hpp:4: error: QMainWindow: No such file or directory 

Jeśli masz jakiś pomysł o tym, jak mogę wykorzystać klasę projektu w innej?

Pozdrowienia

+0

Co masz linia 4 w 'mainwindow.hpp'? – Kirween

+0

Mam #include Aleanar

+0

i masz 'QT + = gui' w' GuiSubProject.pro' dla Qt zawierać ścieżkę? – Kirween

Odpowiedz

5

można zrobić coś takiego:

MainProject /common.pri

INCLUDEPATH += $$PWD/ConsoleSubProject 
    SOURCES  += $$PWD/ConsoleSubProject/firstclass.cpp 
    HEADERS  += $$PWD/ConsoleSubProject/firstclass.hpp 

MainProject/ConsoleSubProject/ConsoleSubProject.pro

include(../common.pri) 
    QT += core 
    SOURCES  += main.cpp 

MainProject/GuiSubProject/GuiSubProject.pro

include(../common.pri) 
    QT += core gui 
    SOURCES  += main.cpp mainwindow.cpp 
    HEADERS  += mainwindow.hpp 
+0

To działa! Wielkie dzięki !! Tylko ostatnie proste pytanie. Kiedy utworzę nowy plik, będę musiał ręcznie dodać plik do pliku common.pri? – Aleanar

+0

Możesz dodać plik bezpośrednio do wspólnego folderu za pomocą Qtcreator (kliknij prawym przyciskiem myszy na wspólny folder> dodaj nowy) w kreatorze możesz wybrać projekt, do którego chcesz dodać plik – Kirween

+0

OK, ale jeśli chciałbym dodać plik do ConsoleSubProject i użyć go ponownie w GuiSubProject? – Aleanar

0

Zamiast include (../.....) w GuiSubProject.pro powinno jej być

INCLUDEPATH = ../ConsoleSubProject 
+0

Próbowałem już, ale nie mogę używać klasy: Niezdefiniowane symbole dla architektury x86_64: "FirstClass :: FirstClass()", do którego odwołuje się: MainWindow :: MainWindow (QWidget *) w mainwindow.o – Aleanar

Powiązane problemy