Qt Quick優點
1.在以往項目的開發過程當中,對於PC端 UI的需求,咱們使用QWidget徹底可以在主流桌面操做系統上實現跨平臺的開發工做;可是當遇到可觸碰交互的用戶界面,並要求在除了主流桌面操做系統,在移動操做系統上也要實現可觀的產品時,Qt Quick的適配性更好
2.同時使用C++與Qt標記性語言QML,若是你已經熟悉了這套開發流程,你會發現這種相較於原有QWidget的開發,這種開發對View模塊的隔離更加完全,後端應用邏輯使用C++,QML開發用戶界面,並有MVD模式可使用,大大提升開發效率
3.Qt Quick默認使用OpenGL ES,渲染效率很高,而且提供了屬性動畫等基本動畫對象以及用於組合多個動畫對象的分組動畫對象,在實現有關動畫方面的需求,會更加方便
在原有QWiget項目中嵌入Qt Quick
若是當前的需求僅僅是要開發一個新的產品或者一個全新的模塊,建議直接選擇Qt Quick;可是在實際的業務場景裏,咱們每每會遇到,因爲QWidget完成的項目業務積累足夠龐大,致使部分需求的開發使用Quick開發成本太高,因此下面我會根據實際的業務開發場景給出兩個技術方案供選擇。
方案1.業務不是很獨立,是原有業務的一部分,而且依賴QWidget的組件,以及QWidget的屬性,使用QQuickWidget
瞭解
QQuickWidget,打開Qt幫助文檔經過索引搜索QQuickWidget,會看到很是詳細的官方解釋:The
QQuickWidget class provides a widget for displaying a Qt Quick user interface。也就是說咱們在可以兼容全部的QWidget屬性以及與原有QWidget組件進行無差異銜接的同時,可使用QML進行界面的編寫。可是必定要打開更多來觀看更詳細的Detailed Description,由於這裏會有幾個關鍵Note,告訴咱們對原有QWidget業務進行無縫銜接的同時,使用QML要付出的代價。
Note1:QQuickWidget的靈活,是以犧牲性能爲代價的。與QQuickWindow和QQuickView不一樣,QQuickWidget涉及渲染到render到OOpenGL幀緩衝區對象,這個會帶來輕微的性能損失(這裏能夠埋個坑,後續一塊兒討論QQuick的渲染機制)
Note2:QQuickWidget將禁用全部平臺上的線程render loop,例如Animator類和vsync驅動的動畫不能使用
Note3:避免在QQuickWidget上調用winId()。這個函數會觸發本機窗口的建立,致使性能下降,並可能出現渲染問題。
因此在使用QQuickWidget的靈活性的同時,要謹記以上三個Note
方案2.全新的項目或者很是獨立的業務,使用QQuickView,將會使用原汁原味的QML與C++進行混合開發
瞭解QQuickView,一樣打開Qt幫助文檔經過索引搜索QQuickWidget(不管了解什麼,先去Qt幫助文檔查詢)The
QQuickView class provides a window for displaying a Qt Quick user interface.點擊更多查看詳細信息。QQuickView是QQuickWindow的派生類,當給定主源文件的URL時候,會自動加載顯示QML場景。
總結:不管是QQuickWidget仍是QQuickVIew,在編碼過程當中的使用大同小異,經過代碼編寫發現問題,解決問題。
參考資料
【1】QmlBook-In-Chinese 第二章 Get Start
【2】Qt Quick核心編程 第一章 Qt Quick 概覽
【3】Qt Quick核心編程 第四章 Qt Quick 入門
【4】Qt Assistant QQuickWidget,QQuickView