无法将C++类型注册到QML系统

Sek*_*met 5 c++ qt qml qt-quick qt5

我正在尝试将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();
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试编译它时(我不在.qml文件中导入它,只测试)我正在调试有关调试的错误.

在此输入图像描述

怎么了?

谢谢.

Ale*_*ing 4

您正在混合使用 Qt Quick 1 和 2,这是不受支持的。QDeclarative 标头适用于 Quick 1,QQml 标头适用于 Quick 2。

您的内容应该是:

#include <QtGui/QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlComponent>
#include "qtquick2applicationviewer.h"
#include "foobar.h"
Run Code Online (Sandbox Code Playgroud)

FooBar 的定义应该在它自己的标头中,并且 QObject 应该包含在那里,以便 moc 发挥其魔力。

有关更多详细信息,请参阅 Qt 中已报告的错误:

QTBUG-32138 - 当 QML 调试打开时,QtQuick2 的 Hello World 无法使用 #include 进行编译