方法一:在QQmlApplicationEngine对象load之前使用QQmlContext进行设置。优先推荐该方法。 C++示例代码: //C++代码: //QML调用C++对象,该方法需要#include <QQmlContext> auto context = engine.rootContext(); //使用context将Person类的person2对象注册到QML中,该方法不需要再qml文件中import组件,在QML直接访问person2即可 Person person1("meimei"); //Person类实例person1 context->setContextProperty("Person1", &person1); //为person1在QML中注册名为“Person1” QML示例代码: Button { id: methon1 text: 'QML调用C++方法1' onClicked: console.log('QML: ' + Person1.myname()) //QML使用Person1访问C++的person1,调用person1对象的myname方法 } 方法二:在QQmlApplicationEngine对象load之前使用qmlRegisterSingletonInstance将C++实例进行注册。 C++示例代码: //QML调用C++,RegisterSingleton方式,较少使用 Person person1("lala"); //Person类实例person1 //注册一个QML组件model1,版本为1.0,使QML可以调用person1对象 qmlRegisterSingletonInstance("model1", 1, 0, "Person1", &person1); QML示例代码: import model1 1.0 //必须导入注册的组件 Button { id: methon2 text: 'QML调用C++方法2' onClicked: console.log('QML: ' + Person1.myname()) //QML使用Person1访问C++的person1,调用person1对象的myname方法 }