3


1

Qtプラグインが機能しない

カスタムウィジェットプラグインを作成しました。 プラグインは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)

3 Answer


4


広範な調査の後、私はこのスレッドにつまずいた:

プラグインをコンパイルすると、取得される「dll」はQt Creator / Qt Designerの統合のみを目的としていることがわかります。 そのライブラリに対してリンクすることはできません。 ヘッダーとソースコードを含む別のライブラリを提供するか、プロジェクトに含める必要があります。 要約すると、カスタムウィジェットをデプロイするための適切な手順は次のとおりです。

  1. カスタムウィジェットのソースとヘッダーを含むライブラリを作成します。 このライブラリをAと呼びましょう。 または、ソースとヘッダーをプロジェクトに追加します。

  2. Qt Creator / Designer統合用のウィジェットプラグインを作成します。 再び、 このプラグインは、Qt Creator / Designer統合以外には使用できません。

  3. プロジェクトでは、次の行を* .proファイルに追加する必要があります。 + LIBS + = C:\ [ライブラリのバイナリへのパス] + INCLUDEPATH + = C:\ [ライブラリのヘッダーへのパス]

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


1


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

  • プラグインのヘッダーにパスを追加して、プログラムが ウィジェットを使用するユーザーは、ヘッダーを適切に見つけることができます。

  • コンパイラへのインクルードパスとしてヘッダーファイルにパスを追加します。 そのため、コンパイラは、プログラムのファイルが参照するときに適切なヘッダーを見つけることができます。


0


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