Qml关于注册c++对象

来源:互联网 发布:淘宝客短网址生成器 编辑:程序博客网 时间:2024/06/02 00:09

在写QT程序的时候经常会把c++类注册到qml中

但,可以分为两种,一种是实例后添加到qml上下文中

比如:我们在main.cpp的main函数中

QxView::AppCtrlBase*app_ctrl;//定义一个指针

 app_ctrl= AppCtrl::getInstance();//new一个实例

QQmlApplicationEngineengine;

engine.rootContext()->setContextProperty("gAppCtrl",app_ctrl );//将实例添加进qml

接着,我们可以在qml中用到gAppCtrl了,其实gAppCtrl是一个app_ctrl的引用,引用在qt中用的非常多,

 

qml中如下:
    QtObject

    {
        id: idRootPriv;
        property var m_vm : null;
    }
    // ///////////////////////////////////////////////////
    // event and signals handler事件和信号处理程序
    // ///////////////////////////////////////////////////
    Component.onCompleted:
    {
        console.debug("Window onCompleted.");//在完成窗口
        idRootPriv.m_vm = gAppCtrl.allocViewModel("");
    }

还有一种就是只是注册一个c++的类到qml

qmlRegisterType<IolCalcvm>("capIolcalc.com",1,0,"IolCalcvm");

然后在qml中

import capIolcalc.com1.0//添加包

property IolCalcvm iolCalcNormalModel:idRootPriv.m_vm.getiolCalcvm()

这里就可以定义一个IolCalcvm类型的变量,然后通过后面的idRootPriv.m_vm.getiolCalcvm()来获取实例

 

 

 

 

 

 

0 0