html結合qt混合ui互動架構

2021-12-30 05:29:37 字數 1645 閱讀 8805

qwebkit為c++和html建起了乙個溝通的橋梁,讓軟體的底層開發和ui的開發解耦,只要底層的api足夠穩定強大,那ui的開發就算變化多端都會很輕鬆了(對於qt c++開發者來說,不用編譯了...^ _ ^),同時可以即時更新ui,或者淘汰舊的版本(更換服務端的html即可),或者增加js統計..等等,全球資訊網之所以有趣,我想很多也來自於提供商有超級強大的控制能力和內容分發能力.而傳統的native應用更新之後往往很難分發到使用者手上,甚至使用者不接受更新,題外話了....混合應用既解決了**的保密問題,同時解決了內容分發問題,還是很有其讀到之處的,比如軟體將功能和展示分別同步開發,只要功能完成地夠快,指定好api,產品即可即時上線搶占市場,因為ui可以隨時更新之後分發到使用者的應用.

首先,我們需要搞明白qt和html具體是如何互動的,我們先從主從開始.

我們的設計原則是底層開放足夠穩定強大的api,ui層呼叫或者組合這些api進行作業.ok,主即ui,從即底層,我們先來定一定乙個html頁面請求底層服務的方式(其實就是qt提供的元物件系統,只是我們讓它更好玩一些)

我們在html的meta中加入乙個自定義的字段

require_core即是我們增加的meta欄位,意思是請求的api的類名(這個類在底層一定是乙個qobject的子類,且建構函式為q_invokable,開放的api即槽)

不如我們來看一看cadbreactor好了

注意紅線處,這是個巨集,我們也看看

嗯...f_dec_reflect和f_use_reflect,想到什麼了?是的,反射建立物件.

思緒很零散,沒事,那就在零散一點吧,我們再來看點東西

ok,讓我們試著把這些東西串在一起思考一下:

乙個html的require_core欄位

乙個wizardhtmlee

乙個反射

我們讓頁面載入的完成的訊號連到wizardhtmlee的pageloadfinished槽,讓wizardhtmlee解析require_core的字段,然後使用反射建立相應的api服務物件,在html頁面中即可呼叫這些api了,當然,我們需要等待api服務物件建立完成

ok,這只是乙個簡單的模型,實際上我們可以讓乙個wizardhtmlee支援多個webview和多個require_core的能力(實際上我已經做了乙個混合html和qml的反射引擎),當然,能看懂這篇文章的話我想這些都只是個體力活了

Qt中UI執行緒與子執行緒的互動

gui框架一般只允許ui執行緒操作介面元件,qt也是如此。但我們的應用程式一般是多執行緒的,勢必就涉及到ui執行緒與子執行緒的互動。下面介紹常用的ui執行緒與子執行緒互動方式,並附上自己的demo。qt中提供了一些執行緒安全的方法來讓我們使用 a.使用訊號槽 qt的訊號槽是執行緒安全的。connec...

QT 結合html和JS做頁面展示

最近需要用qt 去統計一些資料展示在介面上,如果去呼叫qt 庫繪製的話,動畫效果不好,樣式還的調整,需要研究的東西還挺多,原來做過echart的東西,就想著webview空間,直接載入html介面,再通過js 呼叫qt的槽函式來處理 下面是主要的 實現 通訊類 class jscontext pub...

vs中結合Qt的UI檔案生成moc檔案的方法

前言 一點關於moc的小知識 qt是乙個跨平台的可提供使用者介面的應用程式開發框架,用於開發圖形使用者介面 gui 或非圖形使用者介面。qt使用標準的c 擴充套件包括訊號與插槽,是物件導向的框架,可生成特殊的元物件編譯器 meta object compiler,moc 易於擴充套件並且允許元件程式...