99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

屬性導(dǎo)出

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

(1)自定義屬性。

(2)屬性別名。

為一個(gè)組件類型自定義屬性,其語(yǔ)法格式為:

【readonly】property 【:

property是固定寫(xiě)法。

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

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

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

自定義的屬性默認(rèn)有一個(gè)屬性值改變信號(hào),我們可以使用onChanged信號(hào)處理程序來(lái)接收該信號(hào),例如下列代碼:

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

上述代碼中,onLabelChanged信號(hào)處理程序用于接收l(shuí)abel的改變信號(hào);onTintChanged用于接收Tint的改變信號(hào)。

為一個(gè)組件定義一個(gè)屬性別名,寫(xiě)法如下所示:

[default]propertyalias:

property alias是標(biāo)準(zhǔn)寫(xiě)法,不能更改。

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

:指別名引用。

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

例如:

propertyaliasbutton:item.button

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

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

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

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

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

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

一個(gè)實(shí)例

看一個(gè)具體實(shí)例,下面代碼是自定義的一個(gè)按鈕(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標(biāo)簽文本來(lái)確定,然后創(chuàng)建一個(gè)Rectangle用于顯示按鈕顏色,創(chuàng)建MouseArea用于接收鼠標(biāo)的點(diǎn)擊事件,并定義了一個(gè)clicked信號(hào):

signalclicked

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

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}

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

//label別名
propertyaliaslabel:labelText.text

//顏色屬性
propertycolortint:"blue"

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

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

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

(2)不能包含JavaScript表達(dá)式。例如下列寫(xiě)法是錯(cuò)誤的:

propertyaliaslabel:console.log("clicked")

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

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

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

以下幾種寫(xiě)法都是錯(cuò)誤的:

propertyaliaslabel:myName
propertystringmyName:"iriczhao"

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

propertystringmyName:"iriczhao"
propertyaliaslabel:container.myName

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

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

Item{
id:myItem
propertyRectanglemyRect
}



審核編輯:劉清

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

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

    就是我利用TI上導(dǎo)出關(guān)于LM5175芯片的四開(kāi)關(guān)管升降壓開(kāi)關(guān)電源,導(dǎo)出的原理圖中有六個(gè)開(kāi)關(guān)管,我想知道為什么M3、M4各自需要并聯(lián)一個(gè)一樣的開(kāi)關(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。那如果我要采集的信號(hào)的頻率是1GHZ的,采集效果會(huì)如何?
    發(fā)表于 02-06 06:51

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

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

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

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

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

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

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

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

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

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

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

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

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

    由于digiPCBA的中國(guó)服務(wù)器關(guān)閉(難受香菇) 因?yàn)樾纬闪艘欢ǖ氖褂靡蕾?,又因altium 365無(wú)力支付高昂的費(fèi)用 現(xiàn)在需要將在digi平臺(tái)上的庫(kù)全部移植到本地,嘗試使用逐個(gè)器件分類下載下來(lái)后
    發(fā)表于 11-10 13:29

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

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

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

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

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

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

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

    ,那么如何將它導(dǎo)出成hex格式?我翻遍了其中的資料還是沒(méi)有找到辦法。因?yàn)橹挥邪堰@個(gè)hex文件燒寫(xiě)到黑色的評(píng)估板里,才能測(cè)試AD7124。
    發(fā)表于 07-23 08:13