色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    128

    瀏覽量

    12370

原文標題:qml屬性導出

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

收藏 人收藏

    評論

    相關推薦

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

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

    Chart FX——圖表導出

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

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

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

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

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

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

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

    怎樣將keil中的程序導出

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

    LM555QML定時器數據表

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

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

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

    LM7171QML,LM7171QML-SP高速電壓反饋放大器數據表

    電子發燒友網站提供《LM7171QML,LM7171QML-SP高速電壓反饋放大器數據表.pdf》資料免費下載
    發表于 06-15 10:17 ?0次下載
    LM7171<b class='flag-5'>QML</b>,LM7171<b class='flag-5'>QML</b>-SP高速電壓反饋放大器數據表

    5.0V參考二極管LM136A-5.0QML LM136-5.0QML數據表

    電子發燒友網站提供《5.0V參考二極管LM136A-5.0QML LM136-5.0QML數據表.pdf》資料免費下載
    發表于 04-08 09:27 ?0次下載
    5.0V參考二極管LM136A-5.0<b class='flag-5'>QML</b> LM136-5.0<b class='flag-5'>QML</b>數據表

    LabVIEW模板匹配位置信息導出

    大家好,我在利用ni vision assistant生成的模板匹配界面時,想要將每一個匹配物體的位置信息導出到word或者Excel,但是他這個匹配個數不確定,怎么樣把匹配到的所有物體信息導出呀?利用哪些編程?謝謝大家了
    發表于 03-11 20:22

    arcmap怎么導出矢量數據

    軟件。你可以在計算機上的“開始”菜單中搜索并打開該軟件。 第二步:加載矢量數據 在 ArcMap 中導出矢量數據之前,你需要加載你要導出的矢量數據。這可以通過以下方式實現: 點擊“文件”菜單,選擇“添加數據”; 瀏覽到你的矢量
    的頭像 發表于 02-25 15:13 ?3575次閱讀

    arcgis圖層字段怎么批量輸入屬性

    對于ArcGIS圖層字段的批量輸入屬性,可以通過以下步驟完成: 打開ArcMap軟件,并加載需要編輯屬性的圖層。 在ArcMap的主菜單中,選擇“編輯(Edit)”選項,然后選擇“開始編輯
    的頭像 發表于 02-25 14:15 ?5148次閱讀

    arcgis中如何在屬性表中選擇多個屬性

    在ArcGIS中,你可以通過多種方式來選擇屬性表中的多個屬性。下面是一些常用的方法: 方法一:使用Select by Attributes工具 在ArcGIS的屬性表中,選擇“Selection
    的頭像 發表于 02-25 11:10 ?1.5w次閱讀

    gis按屬性選擇怎么選擇兩個

    屬性選擇的步驟和方法。 打開GIS軟件:首先,需要打開安裝在電腦上的GIS軟件,例如ArcGIS、QGIS等。安裝完成后,啟動軟件并創建新項目或打開已有項目。 導入地理數據:選擇"導入"或"添加"功能,將需要進行
    的頭像 發表于 02-25 11:04 ?3312次閱讀
    主站蜘蛛池模板: 4399日本电影完整版在线观看免费| 美女隐私黄www视频| 俄罗斯兽交XXXXX在线| 精品动漫国产亚洲AV在线观看| 男助理憋尿PLAY灌尿BL出去| 乌克兰xxxxx| 99久久夜色精品国产亚洲AV卜| 国产在线精彩亚洲久久| 暖暖日本在线手机免费完整版| 亚洲精品无码专区在线播放 | 99久女女精品视频在线观看 | 中文字幕在线观看亚洲视频| 丰满五十老女人性视频| 欧美日韩888在线观看| 在线高清电影理论片4399| 国产在线视频一区二区不卡| 人与禽交3d动漫羞羞动漫| 67194con免费福和视频| 黄色三级网站| 亚洲不卡视频| 国产黄A片在线观看永久免费麻豆| 男人就爱吃这套下载| 野花香HD免费高清版6高清版| 国产精品无码亚洲区艳妇| 色久久久综合88一本道| 99热精品在线av播放| 美女久久久| 伊人青青草原| 久久免费电影| 中文字幕不卡一区二区三区| 久久观看视频| 在线二区 中文 无码| 久久精品一本到99热| 在线综合 亚洲 欧美| 两性午夜色视频免费网站| 2021乱码精品公司| 欧美午夜精品久久久久久浪潮| av亚洲2017色天堂| 热久久视久久精品18| 成人在线视频免费| 天天久久狠狠色综合|