2018 Meet Qt-上海站(工業自動化專場)總結
阿新 • • 發佈:2018-12-21
前言
2018年11月13日下午, Qt公司在上海舉辦了工業自動化專題的線下研討會, 本人有幸參加, 與Qt專家面對面交流,受益良多.
本次研討會Qt公司主要介紹了以下幾個部分:
- Qt公司介紹
- Qt在自動化行業的應用展示
- Qt公司的專業服務
- Qt產品的新特性
- Qt效能優化方案
- Toradex:嵌入式解決方案提供商展示
下面我將對個人關注的幾個方面進行總結.
Qt產品新特性
- Qt Virtual Keyboard 隨著Qt版本的迭代,截止到Qt5.10,QT自帶的虛擬鍵盤支援26國語言.
- Qt Charts 可以在後臺設定為GPU渲染.
- Qt Quick中的
pointer Handler
可以支援MouseArea透傳.即使用pointer Handler
- Qt Quick新增
Shape
元件.與Canvas相容,但是使用GPU渲染,可以大幅提升程式的效能. - Qt 3D. 支援碰撞檢測,類似與一個小的遊戲引擎
Qt效能優化方案
- 使用事件驅動
- 避免定時器輪詢
- 使用訊號槽的形式
- 使用多執行緒
- 使用C++編寫程式邏輯
- 使用
QML WorkerScript
元件. 該元件會開一個獨立執行緒來執行括號內的程式碼
- 避免使用CPU渲染的元件
- Canvas , Qt Charts (新版本中可以使用
QML Shape
代替Canvas
)
- 使用非同步載入
- 對大圖片使用非同步載入(有bool型別的選項開關)
- 使用C++處理大資料載入
- 使用Qt Quick Compiler
- 只需在Pro檔案中新增一行程式碼
CONFIG += qtquickcompiler
- 使用Qt Creator 的
profiling
效能分析工具, 定位效能瓶頸
QT程式 Fast Boot
在汽車儀表盤等領域, 上電後需要快速的顯示啟動QT畫面. 優化前大約需要30秒左右的時間, 使用Fast Boot技術,可以將QT啟動時間縮短到2秒內. 實現該功能需要以下幾個方面改進.
- uboot裁剪
- linux核心裁剪
- device tree 裁剪
- 使用靜態連結
- Qt裁剪(使用QT Lite工具)
- 使用Qt Quick Compiler, 將QML原始碼編譯成二進位制檔案.
基於WebGL的瀏覽器方案
Qt程式支援在服務端執行, 在瀏覽器中顯示. 但是這需要兩個條件:
使用QML語言開發
在交叉編譯QT時需要選擇WebGL外掛(庫)
因為QT會將頁面渲染轉換為OpenGL指令流,然後傳送到瀏覽器中執行, 因此只有使用OpenGL渲染的程式碼(QML程式碼)才可以在瀏覽器中執行.
ps: 根據現場展示的demo, 發現對手機瀏覽器的支援並不好.
- 在服務端顯示的內容和手機瀏覽器顯示的存在差異(手機中顯示不全),;
- 手機上的觸控事件不會傳輸到服務端中(在手機上拉動一個slider, 在服務端中沒有進行變化), QT工程師解釋說該demo只處理了mouseEvent, 而手機上產生的是touchEvent的原因. 總之需要實際測試一下才能知道2. 手機上的觸控事件不會傳輸到服務端中(在手機上拉動一個slider, 在服務端中沒有進行變化), QT工程師解釋說該demo只處理了mouseEvent, 而手機上產生的是touchEvent的原因. 總之需要實際測試一下才能知道.
Gamma Ray 除錯優化工具
Gamma Ray是KDAB公司的一款注入式Runtime除錯優化程式. 支援QWidgets/ QML/ Qt3D/ Qt Automotive Suite. 動態監控: 網路, 資源樹, UI, 訊號槽, GPU負荷, 記憶體負荷等資訊.
Qt公司的專業服務
QT公司的Senior Key 孫女士今天表示, QT公司可以單獨提供收費的專業技術服務,即使你使用的是開源版. 服務包括: 效能優化服務, 培訓服務, 程式框架適配服務,等