女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

為什么需要將QML的屬性導出呢

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

掃碼添加小助手

加入工程師交流群

為什么需要將屬性導出

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

屬性導出

將一個組件的屬性導出,有兩種形式:

(1)自定義屬性。

(2)屬性別名。

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

【readonly】property 【:

property是固定寫法。

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

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

:表示屬性值,可以是靜態值或將其綁定到動態表達式。

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

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

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

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

[default]propertyalias:

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

:是導出屬性的別名。其他組件則通過該名稱引用到對應的屬性。

:指別名引用。

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

例如:

propertyaliasbutton:item.button

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

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

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

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

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

注:在QtCreator設計模式下導出組件屬性的方法與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參數由labelText標簽文本來確定,然后創建一個Rectangle用于顯示按鈕顏色,創建MouseArea用于接收鼠標的點擊事件,并定義了一個clicked信號:

signalclicked

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

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

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

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

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

//label別名
propertyaliaslabel:labelText.text

//顏色屬性
propertycolortint:"blue"

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

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

(1)只能指向聲明了屬性別名的組件中的組件實例或屬性。

(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
}



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據驅動
    +關注

    關注

    0

    文章

    141

    瀏覽量

    12580

原文標題:qml屬性導出

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    PADS導出.318文件遺漏器件

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

    LM5175的四開關管升降壓開關電源,導出的原理圖中有六個開關管,為什么M3、M4各自需要并聯一個一樣的開關管

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

    DLP NIRscan Nano GUI只是采集光譜數據?導出的數據,需要自行建模嗎?

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

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

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

    如何導出交換機的配置文件

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

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

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

    Chart FX——圖表導出

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

    SOLIDWORKS高級BOM及屬性批量導入工具

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

    機智云歷史數據導出與排查指南

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

    DAC7744用作TMS320F2812的DAC時是否需要將2812輸出的高電平轉化為5v的高電平

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

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

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

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

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

    怎樣將keil中的程序導出

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

    LM555QML定時器數據表

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

    AD7124的程序如何將它導出成hex格式

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