QML是從Qt 4.7開始引入的,QML是一種聲明語言,使得能夠像設計師思考的同樣編碼,而且Qt Quick元素就是應用程序的編譯單元,每一幀的故事板被聲明爲元素樹中的一個分支,每個視覺方面的分支元素的屬性被聲明爲一幀,每幀之間的過渡可裝飾各類動畫和特效。javascript
Qt Quick運行時實現了UI而且提供直接訪問本地API的功能,而且在適當的時候可使用C++擴展獲取更好的性能。因爲Qt Quick的運行時也是在Qt內部實現的,因此能夠十分簡單的作到跨平臺。java
Qt是爲現代產品開發方式所構建的。核心的邏輯部分由開發者編碼並優化,用戶界面由設計師經過可視化工具完成。Qt也集成了工具,支持這種方式的迭代開發。編程
Qt Quick是構建在強大的Qt之上。QML能夠用來擴展已經存在的應用或者是構建全新的應用。QML是徹底從C++擴展而來的。網絡
QML文檔在硬盤或者是網絡資源上生成純文本文件,可是也能夠經過文本數據構造。框架
咱們來看看一個簡單的QML文件的格式:編程語言
再來看看效果:函數
其實QML只是一種語言,它主要是定義了QML文件的語法,以及QML語言的基本實現。而Qt Quick內置不少經常使用的元素,使得咱們能夠很方便的使用。我我的將QML和Qt Quick的關係類比編程語言和編程框架(或者函數庫)。工具
Qt Quick內置了不少經常使用的可視化元素,主要以下圖:性能
Qt Quick也提供了對動畫,以及模型/視圖編程,以及數據存儲等方面的支持。優化
下面咱們來看看Qt 提供的文檔對QML和Qt Quick的介紹。
Qt QML模塊爲使用QML語言開發應用程序提供了框架和庫。它定義並實現了語言以及引擎,而且提供了API使得應用程序開發者可使用自定義類型擴展QML語言,而且將QML代碼和JavaScript,C++集成。
Qt QML模塊提供了QtQml QML模塊,該模塊提供了一系列核心的QML類型,用於建立QML應用;也提供了QtQml C++模塊,該模塊提供了一系列的C++ API用於使用自定義類型擴展QML應用,而且將C++實現集成到QML應用程序中。
QML模塊提供的QML類型:
QML模塊提供的C++ API:
注意:Qt QML模塊只提供語言以及QML的基本實現,並不提供一個可視化的畫布或者渲染引擎用於建立用戶界面。這兩個部分都是由Qt Quick提供的Qt Quick提供了許多組件,模型/視圖支持,動畫框架而且許多用於建立用戶界面的QML細節。
Qt Quick是用於建立QML應用程序的標準庫。Qt QML模塊提供QML的引擎以及語言基礎,Qt Quick模塊提供QML建立基本用戶界面的經常使用元素。它提供了可視化的畫布用於建立和繪製可視化組件,接受用戶輸入,建立數據模型,視圖以及代理。
Qt Quick模塊提供了QtQuick QML模塊,該模塊提供了一系列用於建立用戶界面的QML類型;也提供QtQuick C++模塊,該模塊提供一系列C++ API用於集成用戶界面和QtQuick QML模塊
Qt Quick提供的基本QML類型:
Qt Quick提供的C++ API: