5

我正在尝试将 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 文件中导入它,只在测试中)我得到了关于调试的错误。

在此处输入图像描述

怎么了?

谢谢。

4

1 回答 1

4

您正在混合使用不受支持的 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 - 当 QML 调试打开时,QtQuick2 的 Hello World 不能使用 #include 编译

于 2013-07-23T17:14:14.437 回答