Nicht qmlRegisterType Arbeit

Ich habe festgestellt, dass einige Beispiele von qmlRegisterType über das internet, aber kann einfach nicht damit es funktioniert. Ich erstelle ein neues Qt Quick 2-Projekt, und fügen Sie folgenden Inhalt:

Dies ist meine .pro Datei:

#Add more folders to ship with the application, here
folder_01.source = qml/testlib
folder_01.target = qml
DEPLOYMENTFOLDERS = folder_01

#Libraries
QT += core gui widgets

#Additional import path used to resolve QML modules in Creator's code model
QML_IMPORT_PATH =

#Header files
HEADERS += main.hpp

#The .cpp file which was generated for your project. Feel free to hack it.
SOURCES += main.cpp

#Installation path
#target.path =

#Please do not modify the following two lines. Required for deployment.
include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
qtcAddDeployment()

Dies ist mein code-Datei (main.cpp):

#include <QtQml>
#include <QtWidgets/QApplication>
#include "qtquick2applicationviewer.h"

//test class
class TestClass:public QObject {
  Q_OBJECT

  public:
    TestClass(QObject* parent=0):QObject(parent){}

  public slots:
    void test() {
      qDebug("test!");
    }
};

//entry point
int main(int argc, char *argv[]) {

  //create application
  QApplication app(argc, argv);

  //register custom qml component
  qmlRegisterType<TestClass>("testlib",1,0,"TestClass");

  //create and show qml viewer
  QtQuick2ApplicationViewer viewer;
  viewer.setMainQmlFile(QStringLiteral("qml/testlib/main.qml"));
  viewer.showExpanded();

  //back to OS
  return app.exec();
}

Dies ist mein QML-Datei (main.qml):

import QtQuick 2.0
import testlib 1.0

Rectangle {

  TestClass {
    id:testobj
  }

  Component.onCompleted: {
    testobj.test();
  }
}

Aber ich sehe mehrere linking-Fehler:

  • undefined reference to `vtable for TestClass'
  • undefined reference to `TestClass::staticMetaObject'
  • undefined reference to `TestClass::metaObject() const'
  • undefined reference to `TestClass::qt_metacast(char const*)'
  • undefined reference to `TestClass::qt_metacall(QMetaObject::Call, int, void**)'

Nicht qmlRegisterType Arbeit

Bin ich mit Qt 5.2.1 Lieferumfang MinGW 4.8 stabil. Diese Fehler bedeuten, der linker nicht finden können, library-Dateien, die Implementierungen von Methoden enthalten (oben angegeben). Was ist passiert? Kann nicht kompiliert werden, die auf Qt 5 aber ok, die auf Qt 4?

Posten Sie Ihre .pro - Datei, und stellen Sie sicher, dass Sie getan haben, eine komplette Reinigung und neu erstellen.
Ja, posten Sie Ihre Projekt-Datei und einer einfachen Testfall mit full-source-code reproduzieren Sie das Problem, bitte.
ich habe soeben das detaillierte code, pls nehmen einen Blick
Hinzugefügt alle codes

InformationsquelleAutor jondinham | 2014-03-07

Schreibe einen Kommentar