I've found some examples of qmlRegisterType on the internet but just can't make it work. I create a new Qt Quick 2 project and add the following contents:
This is my .pro file:
#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()
This is my code file (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();
}
This is my QML file (main.qml):
import QtQuick 2.0
import testlib 1.0
Rectangle {
TestClass {
id:testobj
}
Component.onCompleted: {
testobj.test();
}
}
But I face multiple linking errors:
- 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**)'

I'm using Qt 5.2.1 shipped with MinGW 4.8 stable. These errors mean the linker can not find library files which contain method implementations (stated above). What happened? May be fail to compile on Qt 5 but ok on Qt 4?
.profile, and make sure you have done a full clean and rebuild. - cmannett85