pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

如何使用 Qt WebEngine 和 QWebChannel?

How to use Qt WebEngine and QWebChannel?(如何使用 Qt WebEngine 和 QWebChannel?)
本文介紹了如何使用 Qt WebEngine 和 QWebChannel?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在使用新的 WebEngine 來玩耍和學習.我一直試圖找到一些使用 Qt WebKit 找到的類似方法:addToJavaScriptWindowObject()

I'm using the new WebEngine to play around and learn. I've been trying to find some similar methods found using Qt WebKit: addToJavaScriptWindowObject()

我發現使用 Qt WebEngine 時,必須使用 QWebChannel 將函數注冊到 JavaScript 窗口對象.如果這是正確的,那么我將回答以下問題.

I found that using Qt WebEngine, I have to use the QWebChannel to register functions to the JavaScript window object. If this is correct, it takes me to the following question.

我已經在我的電腦上安裝了 Qt 5.4.0.我注意到 qwebchannel.js 在我電腦上安裝的 SDK 中沒有找到.我在 Git 源碼上找到的.

I've installed Qt 5.4.0 on my computer. I noticed that qwebchannel.js is not found in the SDK installed on my computer. I found it on the Git source.

如果我有一個帶有 QWebEnginePageQWebEngineView 的 Qt 本機桌面應用程序,我需要什么才能在 JavaScript 窗口對象上注冊函數?

If I have a Qt native desktop application with a QWebEnginePage and QWebEngineView, what do I need to be able to register functions on the JavaScript window object?

我的桌面應用程序會自動導航到我創建的 http 頁面.所以我可以訪問連接到 QWebEngineView 的內容.

My desktop application navigates automatically to a http page that I have created. So I have access to the content connected to the QWebEngineView.

需要采取哪些步驟才能完成這項工作?

What are the steps to take so I can make this work?

推薦答案

在 Qt5.6 中,如果想讓 C++ 部分和 JavaScript 進行通信,唯一的方法就是使用 QWebChannel 在 QWebEngineView,如您所說.你在 .cpp 文件中這樣做:

In Qt5.6, if you want to make C++ part and JavaScript to communicate, the only way to do it is using QWebChannel on a QWebEngineView, as you stated. You do it this way in the .cpp file:

m_pView = new QWebEngineView(this);
QWebChannel * channel = new QWebChannel(page);
m_pView->page()->setWebChannel(channel);
channel->registerObject(QString("TheNameOfTheObjectUsed"), this);

在這里,您只是說您注冊了一個名為 TheNameOfTheObjectUsed 的對象,該對象將在 JS 端可用.現在,這是在 JS 端使用的代碼部分:

Here, you just say that you register an object named TheNameOfTheObjectUsed that will be available on the JS side. Now, this is the part of code to use in the JS side :

new QWebChannel(qt.webChannelTransport, function (channel) {
            // now you retrieve your object
            var JSobject = channel.objects.TheNameOfTheObjectUsed;
        });

現在,如果你想在 JS 端檢索類的一些屬性,你需要在 C++ 端有一個方法,它返回一個字符串,一個整數,一個長......這是它的樣子C++ 端,在你的 .h 中:

Now, if you want to retrieve some properties of the class in the JS side, you need to have a method on the C++ side which returns a string, an integer, a long... This is what it looks like on the C++ side, in your .h:

Q_INVOKABLE int getInt();
Q_PROPERTY(int myIntInCppSide READ getInt);

現在,你在 JS 端得到這樣的 int :

And now, you get the int like this on the JS side :

var myIntInJSside= JSobject.myIntInCppSide;

這是一個非常簡單的解釋,我建議您觀看這個視頻對我很有用.此外,您可能想了解更多關于 QWebChannel 提供的 JavaScript API,以及有關 QWebChannel 的文檔.

This is a very simple explanation, and I recommend you to watch this video which was very useful to me. Also, you might want to read more about the JavaScript API provided by QWebChannel, as well as the documentation about QWebChannel.

希望有幫助!

這篇關于如何使用 Qt WebEngine 和 QWebChannel?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數據?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環: for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環?)
Reusing thread in loop c++(在循環 C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環形?)
主站蜘蛛池模板: 「安徽双凯」自动售货机-无人售货机-成人用品-自动饮料食品零食售货机 | 房在线-免费房产管理系统软件-二手房中介房屋房源管理系统软件 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 九爱图纸|机械CAD图纸下载交流中心 | 隔爆型防爆端子分线箱_防爆空气开关箱|依客思 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格 | 捷码低代码平台 - 3D数字孪生_大数据可视化开发平台「免费体验」 | 湖州织里童装_女童男童中大童装_款式多尺码全_织里儿童网【官网】-嘉兴嘉乐网络科技有限公司 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 | 十二星座查询(性格特点分析、星座运势解读) - 玄米星座网 | 翅片管散热器价格_钢制暖气片报价_钢制板式散热器厂家「河北冀春暖气片有限公司」 | 淘气堡_室内儿童乐园_户外无动力儿童游乐设备-高乐迪(北京) | 工业铝型材生产厂家_铝合金型材配件批发精加工定制厂商 - 上海岐易铝业 | 信阳市建筑勘察设计研究院有限公司 | 小型铜米机-干式铜米机-杂线全自动铜米机-河南鑫世昌机械制造有限公司 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | 超声波流量计_流量标准装置生产厂家 _河南盛天精密测控 | 不锈钢搅拌罐_高速搅拌罐厂家-无锡市凡格德化工装备科技有限公司 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 挨踢网-大家的导航!| 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 二手注塑机回收_旧注塑机回收_二手注塑机买卖 - 大鑫二手注塑机 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 密封无忧网 _ 专业的密封产品行业信息网 | 爆炸冲击传感器-无线遥测传感器-航天星百科| 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 | 精密交叉滚子轴承厂家,转盘轴承,YRT转台轴承-洛阳千协轴承 | 大型低温冷却液循环泵-低温水槽冷阱「厂家品牌」京华仪器_京华仪器 | 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 | 薄壁轴承-等截面薄壁轴承生产厂家-洛阳薄壁精密轴承有限公司 | 武汉创亿电气设备有限公司_电力检测设备生产厂家 | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 农业仪器网 - 中国自动化农业仪器信息交流平台 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 浙江富广阀门有限公司 |