setContextProperty qmlRegisterType qRegisterMetaType等区别
1,setContextProperty 如果要使用单个全局类来访问QML或从QML访问.这里您需要在使用setContextProperty()之前创建此类对象。就是说 类实列化一次,QML中可以直接使用这个类。 如: MainController mainController; engine.rootContext()->setContextProperty("MainController", &mainController); 则QML中可直接使用 MainController。 2,qmlRegisterType 将C++实现的类在QML中调用的。与1 不一样,全局不唯一。 如: qmlRegisterType<AgoraWeb>("AgoraWeb",1,0,"AgoraWeb"); 每个QML中 会自己实例化一份内存。 Item { id:root property bool isMaster: false AgoraWeb{ id:agoraWeb } 3,qRegisterMetaType Qt信号槽中使用自定义类型,需要注意使用qRegisterMetaType对自定义类型进行注册 步骤:(以自定义TextNumber类型为例) 自定一种类型,在这个类型的顶部包含:#include <QMetaType> 在类型定义完成后,加入声明:Q_DECLARE