3

カスタムウィジェットプラグインを作成しました。プラグインはQtCreatorと正常に統合されますが、プログラムをコンパイルすると、次のエラーが発生します。

「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)
4

3 に答える 3

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 /QtDesignerの統合のみを目的としていることがわかります。そのライブラリに対してリンクすることはできません。ヘッダーとソースコードを含む別のライブラリを提供するか、プロジェクトに含める必要があります。したがって、要約すると、カスタムウィジェットをデプロイするための適切な手順は次のとおりです。

  1. カスタムウィジェットのソースとヘッダーを含むライブラリを作成します。このライブラリをAと呼びましょう。または、プロジェクトにソースとヘッダーを追加します。
  2. Qt Creator/Designer統合用のウィジェットプラグインを作成します。繰り返しになりますが、このプラグインはQt Creator/Designerの統合以外には使用できません。
  3. プロジェクトでは、次の行を*.proファイルに追加する必要があります。

    LIBS + = C:\[ライブラリのバイナリへのパス]
    INCLUDEPATH + = C:\[ライブラリのヘッダーへのパス]

ウィジェットプラグインをコンパイルしたときに取得するライブラリではなく、ライブラリAにリンクしていることにもう一度注意してください。

于 2010-03-22T11:36:20.343 に答える
1

Designerでウィジェットを表示できる場合、プラグインは指定したとおりに機能しています。あなたの問題は基本的にあなたがコンパイルしているプログラムがあなたがプラグインを介して追加しているウィジェットのヘッダーファイルを見つけることができないということです。答えはおそらく2つのうちの1つです。

  • プラグインのヘッダーへのパスをさらに追加して、ウィジェットを使用するプログラムがヘッダーを適切に見つけられるようにします。
  • ヘッダーファイルへのパスをコンパイラへのインクルードパスとして追加します。これにより、プログラムのファイルがヘッダーを参照するときに、コンパイラが適切なヘッダーを見つけることができます。
于 2010-03-21T18:22:23.273 に答える
0

私は同じ問題に直面しました。次に、プラグインDLLのすべてのヘッダーファイルと.cppファイルをアプリケーションプロジェクトファイルに明示的に追加しようとしました。問題が修正されました。

于 2015-09-03T04:42:31.317 に答える