QT中 C++与 js 交互 (下):使用QJSEngine

1.主要代码:

C++:

 1 void QJSEngineDemo::initCenterControl()
 2 {
 3     QJSValue jsMetaObject = m_pJSEngin->newQMetaObject(&centerControl::staticMetaObject);
 4     m_pJSEngin->globalObject().setProperty("CenterControl", jsMetaObject);
 5 }
 6 void QJSEngineDemo::exeJsFun(QString& fun)
 7 {
 8     QJSValue jsObj = m_pJSEngin->globalObject().property("objGlobal");
 9     QJSValue result = jsObj.property(fun).call(QJSValueList()<<"11"<<"22");
10     printException(result);
11 }
12 
13 void QJSEngineDemo::printException(QJSValue& result)
14 {
15     if (result.isError())
16       qDebug()<< "Uncaught exception at line"
17               << result.property("lineNumber").toInt()
18               << ":" << result.toString();
19 }
20 
21 int main(int argc, char *argv[])
22 {
23     QApplication a(argc, argv);
24     preLoadScreen(NULL,a);
25 
26     QJSEngineDemo jsEngine;
27     jsEngine.initCenterControl();
28     jsEngine.loadJSFiles();
29     QString fun = "loadTools";
30     jsEngine.exeJsFun(fun);
31 
32     return a.exec();
33 }

JS:

 1 objGlobal.controlObject = null;
 2 
 3 /* use QJSEngine */
 4 objGlobal.loadTools = function() {
 5 
 6     if (!this.initialized) {
 7         this.controlObject = new CenterControl();
 8         this.controlObject.testSignal.connect(testSlot);
 9         this.controlObject.createMainWindow();
10 
11         this.initialized = true;
12     }
13 };
14 
15 function testSlot(){
16     if(this.controlObject !== null)
17         this.controlObject.printMsg("called testSlot");
18 }

2.完整工程代码:

https://github.com/SanSuiWanTong/QT_ToolBox

原文链接: https://www.cnblogs.com/sansuiwantong/p/12844822.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    QT中 C++与 js 交互 (下):使用QJSEngine

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/346872

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午4:06
下一篇 2023年3月2日 上午4:10

相关推荐