qt — Невозможно зарегистрировать тип C ++ в системе QML

Я пытаюсь добавить тип 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, только тестирование), я получаю ошибки об отладке.

введите описание изображения здесь

В чем дело?

Благодарю.

5

Решение

Вы смешиваете 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

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]