C++类继承QObject,在定义中增加Q_Object。
在main函数中
QQmlApplicationEngine engine;
方法一:注册类到QML
qmlRegisterType("JR.UIMgr ", 1, 0, "UIMgr ");
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
在QML中需要
import JR.UIMgr 1.0
声明UIMgr {}对象,在调用C++的方法
方法二:C++注册类,在绑定到QML中
UIMgr uiMgr;
QQmlContext * context = engine.rootContext();
context->setContextProperty("uiMgr", &uiMgr);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
在qml中可直接使用uiMgr去调用C++的方法或属性,不需要import
1)QML调用C++类的方法,要在声明方法前加Q_INVOKABLE字段
2)使用Q_PROPERTY的方式
Q_PROPERTY(type Name READ getName WRITE setName NOTIFY NameChanged)
可在QML使用uiMgr.Name="ABC",将直接调用setName方法
var nnn = uiMgr.Name将直接调用getName方法
其中getName只能返回type类型的结构,而setName方法也只能有一个type类型的参数,否则编译时会出错。