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    [email protected]      邮箱亦是    希望跟朋友们多多交流!





你可能感兴趣的:(JavaScript,JavaScript,JavaScript,JavaScript,JavaScript,qt,QtScript)