# qml与cpp交互之qml访问cpp对象 **Repository Path**: hha3252/qmlcpp-qml-access-cpp ## Basic Information - **Project Name**: qml与cpp交互之qml访问cpp对象 - **Description**: 注册 C++ 对象到 QML,在 QML 中访问 C++对象; - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-06-30 - **Last Updated**: 2023-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # qml与cpp交互之qml访问cpp对象 #### 介绍 注册 C++ 对象到 QML,在 QML 中访问 C++对象; 共两种方式:1.注册c++对象到qml,2.注册c++类到qml --------------------------- 方式一:把c++对象注册到qml中 1. C++对象的类需要继承自OBject,且声明中带Q_OBJECT宏。 2. 函数声明前带Q_INVOKABLE宏的函数,可以被元对象调用。 3. 声明一个这样的对象,用QQmlApplicationEngine::rootContext()->setContextProperty("key", 对象); 4. 设置后,即可在qml中用key访问该对象带Q_INVOKABLE的方法。 * 注:不止是标记为Q_INVOKABLE的方法可以被qml调用,注册为public slots的方法也可被qml访问?说法来源:https://blog.csdn.net/gongjianbo1992/article/details/87965925的部分 ------------------------- 方式二:直接把c++类注册到qml中 1. 也可用全局函数qmlRegisterType("qml包名", 主版本号, 次版本号, "qml类名")来直接把c++类注册到qml中。 2. 引用方法是 import qml类名 主版本号.次版本号