Qt插件不起作用

Aus*_*tin 3 linker plugins qt qmake

我创建了一个自定义的小部件插件。该插件与Qt Creator集成良好,但是当我编译程序时,出现此错误:

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

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

TEMPLATE = app
SOURCES += main.cpp \
    mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
Run Code Online (Sandbox Code Playgroud)

这是插件的* .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)
Run Code Online (Sandbox Code Playgroud)

Aus*_*tin 5

经过广泛的研究,我偶然发现了这个线程:

http://www.archivum.info/qt-interest@trolltech.com/2010-02/01398/Re-%28Qt-interest%29-Undefined-reference-to-%28any-custom-widget%29.html

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

  1. 创建一个包含自定义窗口小部件的源和标头的库。让我们将此库称为A。或者,将源和标头添加到项目中。
  2. 创建用于Qt Creator / Designer集成的窗口小部件插件。同样,此插件仅可用于Qt Creator / Designer集成以外的其他任何功能。
  3. 在您的项目中,必须将以下行添加到* .pro文件中:

    LIBS + = C:\ [
    通往图书馆的二进制文件的路径]包含路径+ = C:\ [通往图书馆的标题的路径]

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