0
点赞
收藏
分享

微信扫一扫

Qml关于注册c++对象

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

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

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

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

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

QQmlApplicationEngine engine;

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.com 1.0//添加包

property IolCalcvm iolCalcNormalModel: idRootPriv.m_vm.getiolCalcvm()

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


举报

相关推荐

0 条评论