Я пытаюсь добавить тип C ++ в систему QML.
#include <QtGui/QGuiApplication>
#include <QDeclarativeEngine>
#include <QDeclarativeComponent>
#include "qtquick2applicationviewer.h"#include <QQmlApplicationEngine>
class FooBar: public QObject {
Q_OBJECT
};int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine("qml/RBot/main.qml");
qmlRegisterType<FooBar>("io.secorp", 1, 0, "FooBar");
return app.exec();
}
Но когда я пытаюсь скомпилировать это (я не импортирую это в файл .qml, только тестирование), я получаю ошибки об отладке.
В чем дело?
Благодарю.
Вы смешиваете Qt Quick 1 и 2, что не поддерживается. Заголовки QDeclarative предназначены для Quick 1, а заголовки QQml — для Quick 2.
Ваши включения должны быть:
#include <QtGui/QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlComponent>
#include "qtquick2applicationviewer.h"#include "foobar.h"
Определение FooBar должно быть в его собственном заголовке, и QObject должен быть включен туда, чтобы moc работал со своей магией.
Для получения более подробной информации смотрите эту уже сообщенную ошибку в Qt:
QTBUG-32138 — Hello World для QtQuick2 не компилируется с #include, когда включена отладка QML
Других решений пока нет …