【问题标题】:Qt Plugins Not WorkingQt 插件不工作
【发布时间】:2010-03-21 16:49:29
【问题描述】:

我创建了一个自定义小部件插件。该插件与 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)

【问题讨论】:

    标签: qt plugins linker qmake


    【解决方案1】:

    经过大量研究,我偶然发现了这个帖子:

    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:\[库的二进制文件路径]
      INCLUDEPATH += C:\[库的标题路径]

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

    【讨论】:

      【解决方案2】:

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

      • 在插件中添加更多标题的路径,以便使用小部件的程序可以正确找到标题。
      • 将头文件的路径添加为编译器的包含路径,以便编译器在程序文件引用它时找到相应的头文件。

      【讨论】:

      • 对不起,你能用代码示例解释一下吗?我不确定你指的是什么。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-12
        • 2018-09-23
        • 2016-04-14
        • 1970-01-01
        • 1970-01-01
        • 2012-01-28
        • 2015-07-14
        • 2014-12-26
        相关资源
        最近更新 更多