QTCreator: 将qt项目用于另一个项目中

6

我想知道如何在QTCreator中将一个QT项目用于另一个项目。 我创建了一个subdirs测试项目,其层次结构如下:

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

我希望在GuiSubProject中使用“firstclass”类(ConsoleSubProject)。为此,我已经在GuiSubProject.pro文件中添加了以下行:
include(../ConsoleSubProject/ConsoleSubProject.pro)

当我尝试构建项目时,它给出了错误信息:
MainProject/GuiSubProject/mainwindow.hpp:4: error: QMainWindow: No such file or directory

如果您想将一个项目的类用于另一个项目中,该怎么做呢?
谢谢。

你在 mainwindow.hpp 的第四行有什么代码? - Kirween
我有 #include <QMainWindow> - Aleanar
在GuiSubProject.pro中有QT += gui用于Qt包含路径吗? - Kirween
是的,我已经添加了 QT += core gui。 - Aleanar
ConsoleSubProject.pro 中,如果你有 QT -= gui,请注意 GuiSubProject.pro 中的 include(../ConsoleSubProject/ConsoleSubProject.pro) 的位置。 - Kirween
我尝试创建一个只包含头文件(.hpp)和源文件(.cpp)的.pri文件:HEADERS += \ firstclass.hpp \ SOURCES += \ firstclass.cpp 我在ConsoleSubProject.pro中添加了include(ConsoleSubProject.pri) 我在GuiSubProject.pro中添加了include(../ConsoleSubProject.pri)但是在GuiSubProject文件资源管理器中,我无法看到头文件和源文件。 - Aleanar
2个回答

5
你可以像这样操作:

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

可以了!非常感谢!!最后一个简单的问题。当我创建一个新文件时,我需要手动将文件添加到common.pri中吗? - Aleanar
你可以使用Qtcreator将文件直接添加到公共文件夹中(右键单击公共文件夹>添加新文件)。在向导中,您可以选择要将文件添加到哪个项目中。 - Kirween
好的,但是如果我想将一个文件添加到ConsoleSubProject中并在GuiSubProject中重用它呢? - Aleanar
在向导中添加新文件时,在最后一个窗口中,您可以选择ConsoleSubProject.pro或common.pri(摘要部分有一个组合框)http://doc.qt.digia.com/qtcreator-2.4/images/qtcreator-add-resource-wizard3.png。 - Kirween

0

在你的GuiSubProject.pro中,应该使用include(../.....)

    INCLUDEPATH    = ../ConsoleSubProject

我尝试过了,但我不能使用这个类: 未定义符号 x86_64 架构: "FirstClass :: FirstClass()", 就在: MainWindow::MainWindow(QWidget*)in mainwindow.o - Aleanar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接