一、綜述
- Qt企業版(Qt Enterprise)主要包括:
- 更完整的Qt庫
- Qt Creator Enterprise IDE
- 商業授權
- Digia公司的技術支持
- Qt雲服務
二、企業版的功能特性
參看官方文檔。
2.1 Charts
Charts是QT提供的圖表模塊。他提供了非常簡便的APIs來繪制令人驚嘆的Line, Spline,Area,Scatter,Pie,Donut,Bar,Polar和Box-and-Whiskers表。
支持Qt5/Qt4.8/Qt4.7。
C++和Qt Quick同時支持。
數據可視化是一大需求。Charts提供了通用的、可擴展的組件。
實時數據的可視化,如示波器,心率監視器,音頻波,圖表組件也被設計出來,用於顯示流利地顯示這些動態數據集。
2.2 Qt Quick Enterprise Controls
它是一個具有多種特性的工業級別外觀和感覺的高級UI庫,可定制,可擴展。提供了常用的,最基本的幾種控件:
- 圓形儀表(如表)
- 表(直計如溫度計)
- 延遲按鈕
- 餡餅菜單
- 撥號
- 開關按鈕
- 狀態指示燈
並且它已經集成到Qt Designer中了。方便開發。
2.3 Data Visualization
可以非常方便地創建3D數據可視化圖形。
主要的特性為:
- Multiple data visualization options: 3D Bars, 3D Scatter, and 3D Surface
- 2D slice views of the 3D data
- Render graphs into images
- Interactive data: rotate, zoom, and highlight data using mouse or touch
- Uses OpenGL for rendering the data
- Qt 5 C++ and Qt Quick 2 support
- Customizable axes for data - control viewable data window with axis ranges
- Linear and logarithmic scales
- Customizable input handling
- Customizable scene handling - full control of cameras and lights
- Customizable themes
- Add custom 3D objects to highlight data areas
- Optimizations for Big Data
2.4 Qt Enterprise Tooling
提供了優秀的工具鏈來簡化開發流程。除了預先配置的交叉編譯工具鏈,你可以通過USB或IP連接直接部署到你的目標設備。遠程調試功能也內置了。
- Qt Quick Enterprise Designer
- QML Enterprise Profiler可以支持更深層次的堆棧性能分析。更精微地找出細小代碼片段對應用程序產生的影響。它可以顯示每幀畫面花費多長時間來渲染,這與業務數據息息相關。
- 支持手機終端的直接打包部署和遠程調試功能。
2.5 Virtual Keyboard
提供了一個可擴展的虛擬鍵盤,支持觸屏。容易定制外觀和自定義圖形。內置了兩種風格:復古和現代。
特性列表(見官網):
- C++后端,Qt Quick UI前端
- 完全可定制的圖形是樣式
- 對不同屏幕尺寸和分辨率具有很好的擴展性
- 對於不同語種鍵盤布局具有良好支持,例如阿拉伯,英語,西班牙,中文等等
- 自動收起,字符預覽和可選擇字符列表,例如方言和自己添加的字符
- 可作為qt程序默認的輸入法
- 單詞預測
- 支持中文拼音
- 可以使用C++和Qt Quick APIs與其他輸入法交互而擴展
- 支持5種導航方式,鍵選擇使用箭頭鍵和回車鍵
2.6 Qt Quick Compiler
提供了一個Qt快速編譯工具,將qml文件編譯成二進制代碼,從而不再需要將qml連同主程序一同發布。官方文檔總結為三個方面。
載入速度提升:動態載入qml文件可以預解析,並且解析步驟可以在初始化的時候跳過。這大大優化了Qt Quick實例的啟動時間。
最佳的性能:當載入時間較長時,不同平台的性能差異較大。所以在一些平台中,禁止了動態代碼生成,例如iOS和WinRT。
提高了安全性:由於qml都被編譯成二進制了,所以可以防止逆向工程。
另外:非企業版中,qml載入有三個步驟(見參考文獻1和參考文獻2):
- 解析(Parse)
將qml解析成抽象語法樹(在qml層面,包括對象、屬性、值)。
- 編譯(Compile)
通過一個編譯器(它的包裝類為QQmlCompiler,底層實現是v8引擎的定制)將qml抽象語法樹與C++對象對應起來,並編譯為QQmlCompileredData對象。但這種過程不是簡單的對應,需要處理很多細節。
這個步驟比第一步解析步驟快得多。
這些QQmlCompileredData會緩存起來,用於重復使用。
- 創建(Create)
QQmlCompileredData用於創建真正的C++對象。QQmlCompileredData中不僅有數據,而且有代碼。其中的代碼部分是字節碼(bytecode),並在運行時被包裝類QQmlVME解釋執行。以后每一個相同qml產生的實例,就會在運行時,直接使用緩存的QQmlCompileredData來而創建,不會再經歷第一個和第二個步驟。
NOTE:在這個過程中,包括了屬性綁定。屬性綁定實質上都是JavaScript函數。具體綁定過程為:QQmlVME
評估代碼,將綁定表達式包裝成一個js函數,從而生成一個C++層面的QQmlBingding
對象。v8引擎則將之編譯成v8::Function
對象(v8使用Just-in-Time,JIT compiler來生成機器碼)。該v8::Function
不會立即執行,而是緩存起來以待時機。
討論:企業版中,上述步驟1和步驟2肯定是被優化掉了。但是步驟3呢?優化到何種程度呢
?
2.7 Pre-Built Software Stack
預配置了一個軟件協議棧,來減輕工作流程中的工具鏈配置等壓力。可以讓開發者專注於原型的開發。利用協議棧可以快速的部署在不同平台上。
2.8 Qt Purchasing
提供了一套商店購買API,可以將你的app發布到這些應用商店。支持iOS中的App Store和Android中Google Play。
Qt Purchasing API是在平台的系統API上構建的,所以購買過程對於使用者來說非常熟悉,可以簡化購買過程。
可以使用C++或者QML來定制開發。並提供了一些商店的實用功能,例如:獲取網店應用的信息,讓app使用者重新安裝app而無需再次購買。
三、總結
Qt企業版總結如下:
- 完整、強大的功能和工具
- 平台的專業支持
- 應用發布無版權限制
- 完整的源代碼修改
- etc…
http://www.quweiji.com/qt5-3%E4%BC%81%E4%B8%9A%E7%89%88%E5%92%8C%E5%BC%80%E6%BA%90%E7%89%88%E5%8A%9F%E8%83%BD%E5%8C%BA%E5%88%AB/