Question

J'ai créé un plugin widget personnalisé. Le plugin intègre bien avec Qt Creator mais quand je compile le programme, je reçois cette erreur:

"test.h: Aucun fichier ou répertoire"

Où test.h est le nom du widget personnalisé. Qu'est-ce que je fais mal? Ceci est le fichier * .pro de l'application:

TEMPLATE = app
SOURCES += main.cpp \
    mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui

Ceci est le fichier * .pro du plug-in:

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)
Était-ce utile?

La solution

Après des recherches approfondies, je suis tombé sur ce fil:

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

Il se trouve que lorsque vous compilez un plug-in, le « dll » que vous obtenez est uniquement à des fins d'intégration Qt Creator / Qt Designer. Vous ne pouvez pas lier contre cette bibliothèque. Vous devez fournir une autre bibliothèque qui contient les en-têtes et le code source ou les inclure dans votre projet. Donc, pour résumer, voici les mesures appropriées pour déployer un widget personnalisé:

  1. Créer une bibliothèque contenant les sources du widget personnalisé et en-têtes. Appelons cette bibliothèque A. Vous pouvez également ajouter les sources et les en-têtes à votre projet.
  2. Créer le plugin widget pour l'intégration de Qt Creator / Designer. Encore une fois, ce plugin n'est pas utilisable pour autre chose que l'intégration Qt Creator / Designer.
  3. Dans votre projet, vous devez ajouter les lignes suivantes au fichier * .pro:

    LIBS + = C: \ [CHEMIN DE LA BIBLIOTHEQUE Binaire]
    INCLUDEPATH + = C: \ [CHEMIN DE LA BIBLIOTHEQUE A TETES]

Notez encore une fois que vous créez un lien à la bibliothèque A, pas à la bibliothèque que vous obtenez lorsque vous compilez le plugin widget.

Autres conseils

Si vous pouvez voir votre widget dans le concepteur, votre plugin fonctionne comme vous l'avez indiqué à. Votre problème est essentiellement que le programme que vous la compilation ne peut pas trouver le fichier d'en-tête pour le widget que vous ajoutez via le plug-in. La réponse est un probable de deux choses:

  • Ajoutez plus de chemin vers l'en-tête dans votre plug-in, de sorte que les programmes qui utilisent le widget peuvent trouver l'en-tête de façon appropriée.
  • Ajoutez le chemin d'accès au fichier d'en-tête comme un chemin d'inclusion de votre compilateur, de sorte que le compilateur peut trouver l'en-tête approprié lorsque
  • référence des fichiers du programme il.

Je confronté à même question. Ensuite, je l'ai essayé d'ajouter tous les fichiers d'en-tête et les fichiers .cpp de DLL plug-in dans des applications fichier projet explicitly.it résolu le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top