Qt script 加载 js 的时机

关于QtScript:

以前因为项目中需要,写了一小段js代码:

var obj = new Object();
obj.msgbox.text = "it is succeed !";
obj.msgbox.exec();
   

 

当然,单纯添个msgbox就胡乱用是会遭雷劈的。在构造函数中当然会有相应的初始化动作

/*

     读js脚本,执行脚本。。。省略

*/

obj =globalObj.property("obj");
   QMessageBox *msgBox = new QMessageBox;
   msgBox->setWindowTitle(tr("jsshow expriment"));
   msgBox->setObjectName("msgbox");
   QScriptValue qsmsgBox =m_pInterpreter->newQObject(msgBox,QScriptEngine::AutoOwnership);

   obj.setProperty("msgbox",qsmsgBox);

 

使用qtscripttool 调试,一直报错,提示msgbox是未知类型。一直找不到问题。因为该加的都加了啊。。

后来才知道,程序(不管是一般桌面程序还是浏览器)加载js 的顺序是先加载global object 里面的内容,也就是说,在这个场景下,程序会先使用msgbox再执行构造函数中的add property方法。

       现在改变了使用方法,js 代码 如下:

var obj = new Object();
obj.myslot = function()
{
    obj.msgbox.text = "it is succeed !";
    obj.msgbox.exec();    
}

     然后再在构造函数中加上一句:  

m_pExecJSCall = ui->menu_Edit->addAction("executejavascript call");

  
qScriptConnect(m_pExecJSCall,SIGNAL(triggered()),obj,myslot);

 

执行的动作都是一样的,但是因为 方法体内定义的方法会在使用时才被加载,而使用它是在加了msgbox 属性以后,所以就可以成功执行了!




本人也是一个初学者,希望能够跟大家多多交流。 qq    aslistener@sina.com      邮箱亦是    希望跟朋友们多多交流!





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值