真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

QML----動(dòng)態(tài)創(chuàng)建對(duì)象-創(chuàng)新互聯(lián)

在工程中有很多情況是需要?jiǎng)討B(tài)創(chuàng)建對(duì)象來完成需求的,QML當(dāng)中也是可以進(jìn)行動(dòng)態(tài)創(chuàng)建的,創(chuàng)建的范圍包括但不限于組件和對(duì)象。

成都創(chuàng)新互聯(lián)是專業(yè)的金東網(wǎng)站建設(shè)公司,金東接單;提供成都做網(wǎng)站、成都網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行金東網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

首先想要?jiǎng)討B(tài)創(chuàng)建組件需要了解組件是什么

一、Component

Component是由一個(gè)由開發(fā)者封裝好的,只暴露必要接口的QML類型,可以重復(fù)使用,有點(diǎn)像類的概念但又不完全像。下面是一個(gè)組件的定義:

Component{
        id:id_Comp
        Rectangle{
            id:id_Root
            width: 200
            height: 200
            color: mData ? "red" : "blue"
            property bool mData: false
            MouseArea{
                anchors.fill: parent
                onClicked: {
                    id_Root.mData = !id_Root.mData
                }
            }
        }
    }

這就是定義了一個(gè)點(diǎn)擊變色的矩形組件,組件的定義要求就是只能包含一個(gè)頂層Item,并且在這個(gè)Item之外不能定義除了Id之外的任何數(shù)據(jù),它通常是給view提供圖形化組件的,它本身不是一個(gè)可見元素,必須要實(shí)例化后才能顯示。而示例化的方式可以靜態(tài)添加也可以動(dòng)態(tài)創(chuàng)建,這里主要講一下動(dòng)態(tài)創(chuàng)建。注:定義Component時(shí)組件名與文件名一致,組件名首字母大寫。組件實(shí)例的id和組成組件的頂層Item的id是各自獨(dú)立的。

二、動(dòng)態(tài)創(chuàng)建的方式

1.Loader

Loader用來動(dòng)態(tài)加載QML組件,可以把它當(dāng)作一個(gè)占位符,需要用時(shí)才加載。下面是Loader的實(shí)例:

Loader{
        id:id_loader
        sourceComponent: id_Comp
    }

通過代碼就可以知道loader只需要設(shè)置sourceComponent或source屬性,就可以把組件加載進(jìn)來,當(dāng)sourceComponent或source發(fā)生改變時(shí)會(huì)重新加載對(duì)象,之前加載的對(duì)象會(huì)被銷毀。當(dāng)sourceComponent或source為空或者undefined時(shí),會(huì)銷毀當(dāng)前加載的對(duì)象,相關(guān)資源也會(huì)釋放,而loader對(duì)象則會(huì)變?yōu)橐粋€(gè)空對(duì)象。loader的item屬性指向了它頂層item,所以可以通過訪問loader的item去修改被加載對(duì)象的屬性。如果組件過大,加載起來非常耗費(fèi)資源,可以采用異步加載的方式只需要將asynchronous屬性設(shè)置為true就可以了。

2.在ECMAScript中動(dòng)態(tài)創(chuàng)建對(duì)象

在ECMAScript中,有兩種方式可以動(dòng)態(tài)創(chuàng)建:

a.使用Qt.CreateComponent()動(dòng)態(tài)創(chuàng)建一個(gè)組件對(duì)象,然后使用Component的createObject()方法創(chuàng)建對(duì)象

var component = Qt.createComponent("Button.qml");
        if (component.status == Component.Ready) {
            var button = component.createObject(parent,
            {"width":120,"height":120});
        }

返回的button對(duì)象就行動(dòng)態(tài)創(chuàng)建出來的對(duì)象的地址,可以通過button去修改對(duì)象的屬性

createObject函數(shù)第一個(gè)參數(shù)指定parent,后面的列表指定屬性

b.使用Qt.createQmlObject()從QML字符串直接創(chuàng)建一個(gè)對(duì)象

這種情況適用于在同一個(gè)qml文件內(nèi)部就進(jìn)行創(chuàng)建

const newObject = Qt.createQmlObject(`
     import QtQuick 2.0

     Rectangle {
         color: "red"
         width: 20
         height: 20
     }
     `,
     parentItem,
     "myDynamicSnippet"
 );

第一個(gè)參數(shù)是需要?jiǎng)?chuàng)建的QML對(duì)象的描述文檔,第二個(gè)參數(shù)是指定parent,第三個(gè)參數(shù)是關(guān)聯(lián)文件,用于錯(cuò)誤報(bào)告

注意:動(dòng)態(tài)創(chuàng)建的對(duì)象不需要使用之后應(yīng)該進(jìn)行銷毀,如果是loader進(jìn)行管理的就將source或者sourceComponent設(shè)置為空,其它的就應(yīng)該調(diào)用destroy()方法進(jìn)行銷毀,這個(gè)函數(shù)的唯一參數(shù)是指定多少毫秒再進(jìn)行刪除,不寫就為0,立即刪除。

常規(guī)的動(dòng)態(tài)創(chuàng)建方法基本就是上述三種,還有些非常規(guī)的比如Repeater,這個(gè)在之后的文章進(jìn)行單獨(dú)介紹

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


文章標(biāo)題:QML----動(dòng)態(tài)創(chuàng)建對(duì)象-創(chuàng)新互聯(lián)
新聞來源:http://weahome.cn/article/hhiji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部