1. 程式人生 > >2018 Meet Qt-上海站(工業自動化專場)總結

2018 Meet Qt-上海站(工業自動化專場)總結

前言

2018年11月13日下午, Qt公司在上海舉辦了工業自動化專題的線下研討會, 本人有幸參加, 與Qt專家面對面交流,受益良多.

本次研討會Qt公司主要介紹了以下幾個部分:

  1. Qt公司介紹
  2. Qt在自動化行業的應用展示
  3. Qt公司的專業服務
  4. Qt產品的新特性
  5. Qt效能優化方案
  6. Toradex:嵌入式解決方案提供商展示

下面我將對個人關注的幾個方面進行總結.

Qt產品新特性

  1. Qt Virtual Keyboard 隨著Qt版本的迭代,截止到Qt5.10,QT自帶的虛擬鍵盤支援26國語言.
  2. Qt Charts 可以在後臺設定為GPU渲染.
  3. Qt Quick中的pointer Handler 可以支援MouseArea透傳.即使用pointer Handler
    不會出現兩個Mouse Area 疊加時只能相應一個的問題.
  4. Qt Quick新增Shape元件.與Canvas相容,但是使用GPU渲染,可以大幅提升程式的效能.
  5. Qt 3D. 支援碰撞檢測,類似與一個小的遊戲引擎

Qt效能優化方案

  1. 使用事件驅動
  • 避免定時器輪詢
  • 使用訊號槽的形式
  1. 使用多執行緒
  • 使用C++編寫程式邏輯
  • 使用QML WorkerScript元件. 該元件會開一個獨立執行緒來執行括號內的程式碼
  1. 避免使用CPU渲染的元件
  • Canvas , Qt Charts (新版本中可以使用QML Shape代替Canvas)
  1. 使用非同步載入
  • 對大圖片使用非同步載入(有bool型別的選項開關)
  • 使用C++處理大資料載入
  1. 使用Qt Quick Compiler
  • 只需在Pro檔案中新增一行程式碼
  • CONFIG += qtquickcompiler
  1. 使用Qt Creator 的 profiling效能分析工具, 定位效能瓶頸

QT程式 Fast Boot

在汽車儀表盤等領域, 上電後需要快速的顯示啟動QT畫面. 優化前大約需要30秒左右的時間, 使用Fast Boot技術,可以將QT啟動時間縮短到2秒內. 實現該功能需要以下幾個方面改進.

  1. uboot裁剪
  2. linux核心裁剪
  3. device tree 裁剪
  4. 使用靜態連結
  5. Qt裁剪(使用QT Lite工具)
  6. 使用Qt Quick Compiler, 將QML原始碼編譯成二進位制檔案.

基於WebGL的瀏覽器方案

Qt程式支援在服務端執行, 在瀏覽器中顯示. 但是這需要兩個條件:

使用QML語言開發
在交叉編譯QT時需要選擇WebGL外掛(庫)

因為QT會將頁面渲染轉換為OpenGL指令流,然後傳送到瀏覽器中執行, 因此只有使用OpenGL渲染的程式碼(QML程式碼)才可以在瀏覽器中執行.

ps: 根據現場展示的demo, 發現對手機瀏覽器的支援並不好.

  1. 在服務端顯示的內容和手機瀏覽器顯示的存在差異(手機中顯示不全),;
  2. 手機上的觸控事件不會傳輸到服務端中(在手機上拉動一個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公司可以單獨提供收費的專業技術服務,即使你使用的是開源版. 服務包括: 效能優化服務, 培訓服務, 程式框架適配服務,等