一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么需要將QML的屬性導(dǎo)出呢

工程師鄧生 ? 來源:嵌入式小生 ? 作者:iriczhao ? 2022-09-14 09:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

為什么需要將屬性導(dǎo)出

在進行QML應(yīng)用開發(fā)時,很多時候都是以組件的形式規(guī)劃軟件的,然而一個組件又由許多子元素組成和描述。當我們需要從一個組件引用另一個組件的屬性時,這時候就需要將被引用組件的屬性導(dǎo)出。例如:當一個組件是由數(shù)據(jù)驅(qū)動的,那么就必須將被數(shù)據(jù)驅(qū)動的屬性導(dǎo)出,供其他組件引用使用和修改。

屬性導(dǎo)出

將一個組件的屬性導(dǎo)出,有兩種形式:

(1)自定義屬性。

(2)屬性別名。

為一個組件類型自定義屬性,其語法格式為:

【readonly】property 【:

property是固定寫法。

:表示屬性的類型。目前支持的屬性類型可以是QML基本類型(bool、double、int、list、real、string、url);可以是QML對象類型;也可以使用var指定的泛型類型。

:表示屬性名稱。屬性名稱必須以小寫字母開頭,且只能包含字母、數(shù)字和下劃線

:表示屬性值,可以是靜態(tài)值或?qū)⑵浣壎ǖ絼討B(tài)表達式。

自定義的屬性默認有一個屬性值改變信號,我們可以使用onChanged信號處理程序來接收該信號,例如下列代碼:

propertyaliaslabel:labelText.text
propertycolortint:"blue"
onLabelChanged:console.log("aliasLabelChanged")
onTintChanged:console.log("tintChanged")

上述代碼中,onLabelChanged信號處理程序用于接收label的改變信號;onTintChanged用于接收Tint的改變信號。

為一個組件定義一個屬性別名,寫法如下所示:

[default]propertyalias:

property alias是標準寫法,不能更改。

:是導(dǎo)出屬性的別名。其他組件則通過該名稱引用到對應(yīng)的屬性。

:指別名引用。

聲明屬性別名與普通的屬性定義類似,只是它需要alias關(guān)鍵字而不是屬性類型,并且屬性聲明的右側(cè)必須是一個有效的別名引用。

例如:

propertyaliasbutton:item.button

上述代碼中,別名則是指item組件實例中的按鈕組件實例。

在 Qt Design Studio和QtCreate設(shè)計模式中,我們可以使用Navigator中的(Export)按鈕將組件導(dǎo)出為具有有效別名引用的屬性名:

01748538-33c8-11ed-ba43-dac502259ad0.png

注:導(dǎo)出的屬性可以在『Connections』視圖下的Properties中查看。

注:在其他文件代碼中使用的組件必須導(dǎo)出為屬性。

注:在QtCreator設(shè)計模式下導(dǎo)出組件屬性的方法與Qt Design Studio是一樣的。

一個實例

看一個具體實例,下面代碼是自定義的一個按鈕(Button):

importQtQuick2.0

Item{
id:container

propertyaliaslabel:labelText.text

propertycolortint:"blue"
signalclicked

width:labelText.width+70;height:labelText.height+18

BorderImage{
anchors{fill:container;leftMargin:-6;topMargin:-6;rightMargin:-8;bottomMargin:-8}
source:'images/box-shadow.png'
border.left:10;border.top:10;border.right:10;border.bottom:10
}

Image{anchors.fill:parent;source:"images/cardboard.png";antialiasing:true}

Rectangle{
anchors.fill:container;color:container.tint;visible:container.tint!=""
opacity:0.25
}

Text{id:labelText;font.pixelSize:15;anchors.centerIn:parent}

MouseArea{
anchors{fill:parent;leftMargin:-20;topMargin:-20;rightMargin:-20;bottomMargin:-20}
onClicked:container.clicked()
}
}

上述代碼中,自定義按鈕的height、width參數(shù)由labelText標簽文本來確定,然后創(chuàng)建一個Rectangle用于顯示按鈕顏色,創(chuàng)建MouseArea用于接收鼠標的點擊事件,并定義了一個clicked信號:

signalclicked

在MouseArea類型的點擊事件處理程序中發(fā)出該信號:

MouseArea{
anchors{fill:parent;leftMargin:-20;topMargin:-20;rightMargin:-20;bottomMargin:-20}
onClicked:container.clicked()
}

使用Image類型導(dǎo)入一張圖片,作為按鈕的背景:

Image{anchors.fill:parent;source:"images/cardboard.png";antialiasing:true}

因為按鈕的文本和顏色需要被其他組件類型控制(即,在其他組件的屬性綁定或邏輯處理中需要改變按鈕的文本和顏色值),所以添加了一個顏色屬性(用于表示按鈕的顏色)和label別名(引用labelText元素的text屬性):

//label別名
propertyaliaslabel:labelText.text

//顏色屬性
propertycolortint:"blue"

通過上述代碼,將屬性導(dǎo)出后,在其他組件類型中則可通過label和tint訪問按鈕組件內(nèi)的屬性。

在設(shè)計中,有效的別名引用有以下幾個特性(以上述例子中代碼為例):

(1)只能指向聲明了屬性別名的組件中的組件實例或?qū)傩浴?/p>

(2)不能包含JavaScript表達式。例如下列寫法是錯誤的:

propertyaliaslabel:console.log("clicked")

(3)除了聲明屬性別名的組件外,不能指向其他類型的組件。

(4)不能指向附加的屬性。

在別名引用的寫法格式上,別名引用必須指定為:, ...。

以下幾種寫法都是錯誤的:

propertyaliaslabel:myName
propertystringmyName:"iriczhao"

上述代碼位置交換一下也是錯誤的。下列從根元素(container為根元素的id)引用的寫法也是錯誤的:

propertystringmyName:"iriczhao"
propertyaliaslabel:container.myName

(5)不能引用深度超過3層的嵌套屬性。例如下列錯誤的用法:

//該屬性引用將不能正常工作
propertyaliascolor:myItem.myRect.border.color

Item{
id:myItem
propertyRectanglemyRect
}



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標題:qml屬性導(dǎo)出

文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    PADS導(dǎo)出.318文件遺漏器件

    這是PADS LAYOUT的基本腳本導(dǎo)出的坐標文件,圖中我的這個器件是TYPE-C卡座,是需要機器貼片的,這個器件的封裝是包含貼片焊盤和固定用的通孔的,現(xiàn)在導(dǎo)出后軟件的SMD屬性是NO
    發(fā)表于 04-12 14:14

    LM5175的四開關(guān)管升降壓開關(guān)電源,導(dǎo)出的原理圖中有六個開關(guān)管,為什么M3、M4各自需要并聯(lián)一個一樣的開關(guān)管

    就是我利用TI上導(dǎo)出關(guān)于LM5175芯片的四開關(guān)管升降壓開關(guān)電源,導(dǎo)出的原理圖中有六個開關(guān)管,我想知道為什么M3、M4各自需要并聯(lián)一個一樣的開關(guān)管?
    發(fā)表于 02-26 08:24

    DLP NIRscan Nano GUI只是采集光譜數(shù)據(jù)?導(dǎo)出的數(shù)據(jù),需要自行建模嗎?

    DLP NIRscan Nano GUI只是采集光譜數(shù)據(jù)?導(dǎo)出的數(shù)據(jù),需要自行建模?哪里可以找到examples代碼?
    發(fā)表于 02-25 07:09

    ADC08D1520QML可以采集到的最高頻率是多少?

    如題,ADC08D1520QML的采樣率為最高3GSPS。那如果我要采集的信號的頻率是1GHZ的,采集效果會如何?
    發(fā)表于 02-06 06:51

    如何導(dǎo)出交換機的配置文件

    在網(wǎng)絡(luò)管理中,導(dǎo)出交換機的配置文件是一項關(guān)鍵任務(wù),它有助于備份、審計、遷移或恢復(fù)網(wǎng)絡(luò)配置。本文將詳細介紹如何導(dǎo)出交換機配置文件,涵蓋多種方法,適用于不同場景和需求。文章內(nèi)容將圍繞幾種常見的導(dǎo)出方法展開,包括通過命令行接口(CLI
    的頭像 發(fā)表于 02-02 17:20 ?3612次閱讀

    ADS1100需要將補碼轉(zhuǎn)換為原碼嗎?怎么求實際的電壓值?

    ADS1100ADS1100是否需要將補碼轉(zhuǎn)換為原碼?還是直接套用公式!怎么求實際的電壓值??
    發(fā)表于 01-20 06:44

    Chart FX——圖表導(dǎo)出

    Chart FX 提供的導(dǎo)出方法可以讓您(或您的最終用戶)以多種格式保存圖表文件、圖像和數(shù)據(jù)。不同平臺的產(chǎn)品能夠導(dǎo)出的格式也不盡相同,只有Web產(chǎn)品(如 Chart FX WebForms)能生成
    的頭像 發(fā)表于 01-15 14:38 ?454次閱讀
    Chart FX——圖表<b class='flag-5'>導(dǎo)出</b>

    SOLIDWORKS高級BOM及屬性批量導(dǎo)入工具

    SOLIDWORKS BOM插件-SolidKits.BOMs工具可以準確、規(guī)范、便捷的一鍵完成各種結(jié)構(gòu)BOM導(dǎo)出,匯總BOM生成,批量導(dǎo)入屬性,自動建立結(jié)構(gòu),實現(xiàn)規(guī)范化管理,并自定義打包操作,還可根據(jù)企業(yè)需求定制模板.BOM工具試用/報價/購買,歡迎點擊咨詢Solidk
    的頭像 發(fā)表于 12-02 16:11 ?911次閱讀

    機智云歷史數(shù)據(jù)導(dǎo)出與排查指南

    機智云歷史數(shù)據(jù)導(dǎo)出與排查指南在使用機智云平臺進行設(shè)備管理和數(shù)據(jù)監(jiān)控時,歷史數(shù)據(jù)的導(dǎo)出和排查是常見的需求。機智云提供了開放的API接口,方便用戶通過編程方式導(dǎo)出設(shè)備歷史數(shù)據(jù),以便進行分析或排查故障
    的頭像 發(fā)表于 11-21 01:01 ?698次閱讀
    機智云歷史數(shù)據(jù)<b class='flag-5'>導(dǎo)出</b>與排查指南

    DAC7744用作TMS320F2812的DAC時是否需要將2812輸出的高電平轉(zhuǎn)化為5v的高電平?

    請問DAC7744用作TMS320F2812的DAC時是否需要將2812輸出的高電平轉(zhuǎn)化為5v的高電平?謝謝!
    發(fā)表于 11-15 06:57

    digiPCBA元件庫下載(轉(zhuǎn)化)本地,下載后的集成庫信息無法批量隱藏屬性信息

    由于digiPCBA的中國服務(wù)器關(guān)閉(難受香菇) 因為形成了一定的使用依賴,又因altium 365無力支付高昂的費用 現(xiàn)在需要將在digi平臺上的庫全部移植到本地,嘗試使用逐個器件分類下載下來后
    發(fā)表于 11-10 13:29

    需要將多路單端音頻信號經(jīng)TPA3130放大至輸出,會有雜音怎么處理?

    大家好,我現(xiàn)在需要將多路單端音頻信號經(jīng)TPA3130放大至輸出。 現(xiàn)在前級用運放NE5532疊加幾路音頻信號,運放輸出再接入TPA3130. 這樣接的話,會有雜音。不使用運放直接將幾路音頻信號串接電阻并在一起輸入TPA3130,雜音還會小點。 這樣的問題怎么處理? 是
    發(fā)表于 10-21 06:00

    怎樣將keil中的程序導(dǎo)出

    1. 準備工作 在開始導(dǎo)出程序之前,需要確保已經(jīng)完成了以下準備工作: 安裝Keil MDK-ARM軟件。 創(chuàng)建一個新的項目,并添加所需的源文件和庫文件。 配置項目設(shè)置,包括芯片型號、編譯器選項、鏈接
    的頭像 發(fā)表于 09-02 10:23 ?4853次閱讀

    LM555QML定時器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《LM555QML定時器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-20 09:29 ?0次下載
    LM555<b class='flag-5'>QML</b>定時器數(shù)據(jù)表

    AD7124的程序如何將它導(dǎo)出成hex格式

    ,那么如何將它導(dǎo)出成hex格式?我翻遍了其中的資料還是沒有找到辦法。因為只有把這個hex文件燒寫到黑色的評估板里,才能測試AD7124。
    發(fā)表于 07-23 08:13