QML筆記整理——QtQuick核心特徵

1、QML文件
1)簡單的QML代碼包含了QML元素,它是以.qml爲後綴名的文件或者文本,其編碼方式爲UTF-8。一個QML文件總是以至少一個import語句開始。Nothing is imported by default,其並沒有包含什麼代碼,僅僅只是爲了在運行時解釋器尋找元素的定義
2)一個QML文件要定義唯一的頂層QML組件
3)Self-contained:A)在執行之前並沒有預處理機制;B)在運行時解釋執行
示例:創建一個簡單的HelloWorld的QML程序,需要將程序放入QML文件裏,比如存放到HelloWorld.qml文件
import QtQuick 2.0//Import existing QML types to be used in this
                  //application, such as Rectangle and Text
Rectangle {
    id: page
    width: 100
    height: 62
    color: "lightgray"
    Text {
        id: helloText
        text: "Hello world!"
        font.pointSize: 24;
        font.bold: true
        y: 30;
        anchors.horizontalCenter: page.horizontalCenter
    }
}

2、QML組件
1)如前所述,QML文檔定義了一個單一的,頂級QML組件。元素對象是根據對應的某個C++的原型而創建的-i.e.  component是在在運行時創建的。例如,一個“button”component會用不同的按鍵字符串被初始化多次
2)組件是有QML基本元素構成的。所以,創建自己的組件是非常容易的。在創建組件的時候,起名字要以大寫字母開始,如MyButton.qml
3)一個組件可以聲明爲內聯組件。使用關鍵字Component聲明,可以使用parent的屬性或者是導入列表中的元素。該組件可以多次在一個QML文件中根據需要被使用(從邏輯上來說,這個組件也只屬於這個QML文件)

3、QML模塊
1)多個QML組件可以組合到一個QML模塊中。最簡單的方法就是創建一個子文件夾,然後把所有的控件放置進去。這些控件可以使用import語句導入到QML的文檔中,如:import  “path_to_mymodule”。導入路徑是和導入控件的QML文件之間的相對路徑。
2)也可以使用命令的導入。
3)用於區分不同的模塊,也可以使代碼更具有可讀性
4)QML組件也可以在工程外的文件定義,這種情況下會用到URI(
在電腦術語中,統一資源標識符(Uniform Resource Identifier,或URI)是一個用於標識某一互聯網資源名稱的字符串。 該種標識允許用戶對網絡中(一般指萬維網)的資源通過特定的協議進行交互操作。URI由包括確定語法和相關協議的方案所定義):import com.nokia.SomeStuff 1.0。通過導入,就可以訪問到放在系統其他地方的com/nokia/SomStuff/下的控件了。這個路徑可以通過下面的方法設置:A)在C++中,使用QmlEngine::addImportPath();B)在執行qml.exe的時候使用選項-L指定路徑
5)另外的導入方法:import "http://myserver.com/.../..." 1.0。這種情況下,一個叫qmldir的文件描述了目錄的內容:
# <Comment>
<TypeName><InitialVersion><File>

4、網絡透明
1)簡單的說,就是QML代碼中使用的其他內容都用URLs表示,對於本地的或者網絡上的內容都適用,支持相對或絕對路徑。如:
// Test1.qml containing a reference to an absolute URL
Image { source: "http://www.example.com/images/logo.png" }
// Test2.qml with a relative URL
Image { source: "images/logo.png" }
2)相對的URLs會自動轉換成絕對路徑(Absolute URLs always stay as they are)
例1:Test2.qml是從下面網址加載的
那麼image的路徑就自動被解析爲http://www.example.com/mystuff/images/logo.png
例2:Test2.qml從本地文件加載
C:/temp/mystuff/Test2.qml
那麼image的路徑就自動被解析爲C:/temp/mystuff/images/logo.png

5、漸進載入
當QML的某個對象引用網絡資源的時候,那麼它將會提供整個加載過程的進度狀態(訪問網絡是一步的操作)。比如,image有一些如下的特殊屬性
status( Null, Ready, Loading, Error)
progress(0.0 - 1.0)
width and height also changes as the image is loaded
應用程序能夠綁定這些屬性,比如:在合適的時候顯示一個進度條。
而對於本地圖片狀態已經準備好了。

In the future versions this might change.
If you wish to remian network transparent, do not rely on this!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章