QML与C++混合编程
一、QML访问c++
两种访问方法:
1、在Qt元对象系统中注册C++类,在QML中实例化、访问;
2、在C++中实例化并设置为QML上下文属性,在QML中直接使用。
对比:与后者相比,前者可以使C++类在QML中作为一个数据类型,例如函数参数类型或属性类型,也可以使用其枚举类型、单例等,功能更强大。
1、信号和槽
2、Q_ENUMS
3、Q_INVOKABLE
4、Q_PROPERTY
二、c++访问QML
1、在C++中访问QML中的属性;
2、在C++中访问QML中的函数与信号。
总结:
1、public和protected修饰的信号和槽函数都是可以通过qml直接访问的,无需加Q_INVOKABLE;普通函数则必须加Q_INVOKABLE修饰。(前提:用上面上说的两个访问方法后)
2、在Qt元对象系统中注册C++类,在QML中实例化、访问情况下:
1)第四个参数首字母须大写。如:qmlRegisterType(“com.myTest”, 1, 0, “MyTest”);
2)在qml里面访问c++枚举时,只能使用类型名称访问 <类型名称>.<枚举项> ;而函数的访问只能通过实例的id进行访问 <实例id>.<具体方法>。
3、……
参考详见:【QT】QML与C++混合编程详解