在写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()来获取实例