Question

En utilisant Qt Creator, je crée une classe avec des fentes personnalisées dans Qt:


class CustomEdit : public QTextEdit
{
    Q_OBJECT

public:
    CustomEdit(QWidget* parent);

public slots:
    void onTextChanged ();
};

Cependant, je reçois cette erreur d'éditeur de liens:

undefined reference to 'vtable for CustomEdit'

La documentation dit:

  

si vous obtenez des erreurs compilateur le long des lignes de « référence non définie à vtable pour LcdNumber », vous avez probablement oublié de courir le moc ou d'inclure la sortie de moc dans la commande de lien.

... mais il est pas évident ce que cela signifie.

Y at-il quelque chose que je dois ajouter à ma classe, ou au fichier .pro?

EDIT - Voici mon fichier .pro:

QT += network \
    script \
    webkit \
    xml
TARGET = MyApp
TEMPLATE = app
SOURCES += main.cpp \
    MainWindow.cpp \
    CustomEdit.cpp 
HEADERS += MainWindow.h \
    CustomEdit.h
FORMS += mainwindow.ui

EDIT:

traite cette question avec les mêmes problèmes, mais les réponses ne font pas clairement comment je peux résoudre ce problème dans Qt Creator. Ai-je besoin d'ajouter explicitement le fichier .cpp généré moc à ma liste des fichiers à lier? Cela semble comme une douleur.

Était-ce utile?

La solution

Qt Creator est un IDE qui est utilisé pour créer vos projets Qt. C'est tout. Mais qmake vous permet de BUID le projet. De qmake manuel,

qmake automatise la génération de Makefile pour que seulement quelques lignes d'information sont nécessaires pour créer chaque Makefile. qmake génère un Makefile sur la base des informations contenues dans un fichier de projet. qmake contient des fonctionnalités supplémentaires pour soutenir le développement avec Qt, y compris automatiquement des règles de construction pour moc et uic.

Vous n avez pas d'inclure vos fichiers moc séparément, mais vous devez exécuter qmake qui contient toutes les informations sur les fichiers moc requis. Jetez un oeil à l'Makefile.debug généré ou Makefile.release après qmake et vous pouvez trouver tous les fichiers moc seront inclus pour vous.

pour exécuter qmake dans Qt Creator, allez à Build->RebuildAll qui se déroulera le qmake et tous les fichiers seront générés et liés (de moc) (en Makefile.debug) ainsi.

Espérons que cela elimate votre référence non définie.

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