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文件中导入它,只测试)我正在调试有关调试的错误.

怎么了?
谢谢.
您正在混合使用 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 进行编译