Qt插件不工作

Qt插件不工作,qt,plugins,linker,qmake,Qt,Plugins,Linker,Qmake,我已经创建了一个自定义小部件插件。该插件与Qt Creator很好地集成,但当我编译程序时,出现以下错误: “test.h:没有这样的文件或目录” 其中test.h是自定义小部件的名称。我做错了什么?这是应用程序的*.pro文件: TEMPLATE = app SOURCES += main.cpp \ mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui 这是插件的*.pro文件: CONFIG += d

我已经创建了一个自定义小部件插件。该插件与Qt Creator很好地集成,但当我编译程序时,出现以下错误:

“test.h:没有这样的文件或目录”

其中test.h是自定义小部件的名称。我做错了什么?这是应用程序的*.pro文件:

TEMPLATE = app
SOURCES += main.cpp \
    mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
这是插件的*.pro文件:

CONFIG      += designer plugin debug_and_release
TARGET      = $$qtLibraryTarget(testplugin)
TEMPLATE    = lib
HEADERS     = testplugin.h
SOURCES     = testplugin.cpp
RESOURCES   = icons.qrc
target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS    += target
include(test.pri)

如果您可以在designer中看到您的小部件,那么您的插件正在按照您指定的方式工作。您的问题基本上是您正在编译的程序无法找到您通过插件添加的小部件的头文件。答案可能是两件事之一:

  • 在插件的头中添加更多的路径,以便使用小部件的程序可以适当地找到头
  • 将头文件的路径添加为编译器的include路径,这样当程序文件引用它时,编译器可以找到相应的头文件

经过广泛的研究,我偶然发现了以下线索:

事实证明,编译插件时,得到的“dll”仅用于Qt Creator/Qt Designer集成目的。您不能链接到该库。您应该提供另一个包含标题和源代码的库,或者将它们包含在项目中。总之,以下是部署自定义小部件的正确步骤:

  • 创建一个包含自定义小部件的源和头的库。让我们将此库称为A。或者,将源和头添加到项目中
  • 创建用于Qt Creator/Designer集成的小部件插件。同样,除了Qt-Creator/Designer集成之外,此插件不可用于任何其他用途
  • 在项目中,必须将以下行添加到*.pro文件中:

    LIBS+=C:\[库的二进制文件的路径]
    INCLUDEPATH+=C:\[库的A头的路径]


  • 再次注意,您链接的是库A,而不是编译小部件插件时得到的库

    我也面临同样的问题。然后我尝试将插件DLL的所有头文件和.cpp文件显式地添加到应用程序项目文件中。它解决了这个问题。

    对不起,您能用代码示例解释一下吗?我不知道你指的是什么。