詳解QML的錨點布局anchor

2020-12-27 軟體技術分享

QML是Qt推出的Qt Quick技術的一部分,它可以快速便捷實現流暢的UI。最近工作項目中採用了QML來開發觸控螢幕,由於第一次接觸使用QML, 難免遇到各種各樣的問題,特別是界面的布局,所以,本文結合工作中探索的經驗,重新梳理總結了QML的錨點布局anchor。

本文將會從以下四個方面來講解錨點布局,分別是錨線、邊距、偏移以及便捷用法。首先給出下面的結構圖,一方面可以讓大家在總體上對錨點布局的內容有一個框架,另一方面也方便後續知識的回顧梳理。先安靜下來,花幾分鐘熟悉下總體知識結構,然後再往下閱讀,閱讀完成之後,再回來看看是否知識結構更加清晰明了。

一、布局簡介

錨點布局anchor, 對於第一次接觸QML的新手來說,可能稍微比較難理解,這裡可以這麼理解, 錨是船停泊時所用的器具,用來固定船隻。對於界面布局來說,就是用來固定部件的位置。

二、位置布局

一個部件有七個錨線(anchor lines), 分別是left、right、top、bottom、horizontalCenter、verticalCenter和baseline。這裡的anchor lines都是不可見的。

下圖所示,藍色區域代表一個部件,用虛線來代表錨線,left代表部件的左錨線、right代表部件的右錨線、top代表部件的頂部錨線、bottom代表部件的底部錨線、horizontalCenter代表部件的水平居中錨線、vertialCenter代表部件的垂直居中錨線。

至於baseline錨線,這裡沒有搞明白他的具體效果,所以沒有畫出。QT的官方文檔說是baseline是標示文本的虛線,對於沒有文本的部件,功能等同於top。但是實際操作的時候,沒有看出區別。所以,對於沒有理清的知識點,就不多說了,免得誤人子弟。

下面我們來看一個位置布局的例子。這裡設置整個窗口背景為黑色。例子中代碼我們只需要關注rect1和rect2的最後一行。比如rect1最後一行為anchors.left: parent.left,表示rect1左側的錨線在父級的左側錨線。rect2最後一行為anchors.left: rect1.right,表示rect2左側錨線在rect1的右側錨線。這裡需要注意部件在rect1和rect2是在直接父級的內部,而rect1和rect2是屬於同級級別。所以,錨點的設置稍微有點區別。這裡可以細細體會一下。

運行顯示的效果如下圖所示,rect1在窗口左上角,rect2顯示在rect1的右側。

anchor也提供簡易設置位置的方式,如centerIn, 表示位置為目標對象的中心,相當於同時設置了horizontalCenter和verticalCenter。比如上面例子中文本的設置anchors.centerIn: parent,表示將文本信息位置設置為父級的中心。

注意,我們採用anchor進行布局的時候,如果單單設置一個屬性是沒有辦法確定其位置,這可能導致部件沒有辦法顯示出來。比如如果rect1沒有設置height, 那麼rect1就不會顯示。如果不想要顯示設置rect1的高度,那麼除了設置rect1左側的錨線,還需要設置它的頂部和底部的錨線。

三、邊距

anchor還提供了控制項的邊距設置,基本元素分別為leftMargin、rightMargin、topMargin、bottomMargin。如下圖所示,橙色背景的方塊代表一個部件,則它的四周順時針分別表示為左側邊距、頂部邊距、右側邊距、底部邊距。

上一個例子的基礎上在rect2中增加邊距 anchors.leftMargin:50

運行效果如下所示,rect2左側增加了邊距。

anchors也提供簡易設置部件邊距的方法,如margins, 它的功能相當於將部件的左右上下邊距都設置為相同的值。

四、偏移

anchor可以設置部件的偏移,分別為horizontalCenterOffset, verticalCenterOffset 和baselineOffset,表示水平中心的偏移、垂直中心的偏移、基線的偏移。

添加部件rect3, 設置顯示在窗體中心,但是偏向右下角50個像素

運行效果如下圖所示, 左側窗口是沒有設置偏移的效果,右側窗口是設置了偏移的效果。

五、局限

anchor布局也有局限性,出於性能考慮,部件只能設置錨點為同級或者直接父級。

六、總結

本文已經將錨點布局涉及的錨線、邊距、偏移,結合例子進行詳細的講解說明。對於複雜的布局,如果採用錨點布局,那麼都是上面基本元素組合而成的。

相關焦點

  • 《王者榮耀》什麼是皮膚錨點 皮膚錨點含義解答
    導 讀 王者榮耀皮膚錨點是什麼意思?
  • 錨點與非錨點VOLTE切換問題排查
    信令解析① 終端在18:24:57.930時NR開始添加SN,通過查看信令詳解,雙連接模式為SCG模式,在18:24:58.102時NR添加SN成功。② 終端在18:25:01.549時進行VoLTE業務起呼,在18:25:01.612時進行NR刪除SN,釋放5G網絡,在18:25:06.557時VoLTE業務接通。
  • 完全理解PolarMask-圖像實例分割-anchor free新思路
    實現了在沒有錨點且不被建議的情形下,實現了目標檢測算法。並且提出了Center-Ness的思想,性能表現與目前許多比較主流的基於錨框的目標檢測算法相同,甚至還有提高。為什麼不使用錨框成為熱點研究方向錨框首先在Fast R-CNN中提出,後續在許多YOLO等知名目標檢測模型中應用。但錨框有缺點。
  • 可攜式金屬錨點系統快速固定器,可攜式金屬錨點套裝, 攀登金屬錨點固定器
    煙臺銳通安全設備有限公司可攜式金屬錨點系統快速固定器,可攜式金屬錨點套裝,攀登金屬錨點固定器錨點是指可以承受拉力或支撐力負荷的固定點
  • 《江南百景圖》城市建築怎麼布局 城市建築布局思路詳解
    導 讀 江南百景圖中玩家需要把城市的建築合理的進行布局,只有這樣才能更好的將遊戲玩下去,不然天天看著圖,
  • AABO:自適應最優化Anchor設置,性能榨取的最後一步|ECCV 2020
    編譯 | VincentLee來源 | 曉飛的算法工程筆記Introduction目前,主流的目標檢測算法使用多種形狀的anchor box作為初始預測,然後對anchor box進行回歸調整,anchor box的配置是檢測算法中十分重要的超參數
  • 《王者榮耀》錨點是什麼意思 英雄皮膚錨點有什麼用
    王者榮耀錨點是什麼意思? 王者榮耀錨點是什麼意思?錨點這個概念大家在日常生活中聽到的可能不太多,不過卻是王者榮耀英雄皮膚設計中的一個重點詞彙,那麼錨點到底指什麼呢,下面小編就為大家來詳細介紹一下,希望能幫助到你。
  • 原神傳送錨點怎麼用
    18183首頁 原神 原神傳送錨點怎麼用 原神傳送錨點怎麼用 來源:www.18183.com
  • 原神傳送錨點怎麼激活
    18183首頁 原神 原神傳送錨點怎麼激活 原神傳送錨點怎麼激活 來源:www.18183.com
  • People | News Anchor Recognized for High-level of Competence
    In terms of some people branding her as a competitive anchor, Hai said: "I have to make efforts to be more competitive since many young people enter this field every day."
  • 《原神》傳送錨點消失的解決方法
    《原神》遊戲中傳送錨點消失怎麼辦?在原神遊戲中很多小夥伴都遇到過這種情況,玩家的傳送錨點消失了,不知道怎麼解決,那麼接下來小編為大家帶來《原神》傳送錨點消失的解決方法,一起來看看吧。在原神遊戲中很多小夥伴都遇到過這種情況,玩家的傳送錨點消失了,不知道怎麼解決,那麼接下來小編為大家帶來《原神》傳送錨點消失的解決方法,一起來看看吧。
  • 天鵝之舞刪除翅膀,仲夏夜之夢刪除鞦韆全因錨點!官博:沒有錨點
    相信大家都對這個名字不陌生,之前的一個採訪中,作為王者榮耀皮膚部門的管理層,在採訪中表示要加強錨點,錨點是什麼就不用多說了,大家這些天來都了解清楚,微博一度因為錨點登上熱搜。然而最近錨點事件剛落幕,五虎將也傳來消息要重做,但是想不到的是最近的爆料更是把錨點事件推上了一個新的巔峰,那就是小喬的榮耀典藏皮膚天鵝之夢,因為關菲菲的錨點策略,將刪除翅膀,再次重做。
  • 錨點覆蓋率和NR駐留比提升方案研究
    根據現網的切換策略設置,在錨點覆蓋相對較弱的區域(A2門限:-108dbm)才會發起異頻切換,在錨點不連續覆蓋的雙錨點覆蓋區域,無法及時在-95dbm以上時就切換至覆蓋良好的異頻錨點,不能及時體現雙錨點的覆蓋優勢。因此,需研究新的切換策略,助力精品網格驗收。
  • 【敗家寶貝】| 方便、乾淨、實用的anchor玻璃量杯、烤盤返場啦
    這套anchor的量杯和烤盤上次剛上架,就被大家搶購一空啦~~後臺好多朋友留言說沒買到,真是不好意思。
  • 馬可暗影遊獵沒錨點帥?看到有錨點的廢案,這才是吸血鬼,帥爆了
    馬可的80級史詩戰令限定皮膚暗影遊獵,這款皮膚跟原皮膚相比,幾乎看不到錨點,但是沒有錨點真的帥氣嗎?當看到有錨點的廢案皮膚的時候,百萬玩家紛紛表示,這才是吸血鬼嘛,帥爆了!馬可的原皮膚是有帽子的,一副西部牛仔的打扮,其實馬可的原皮原畫也是非常帥氣的,有一種西方牛仔的帥氣,而現在新皮膚馬可暗影遊獵,則是完全去掉了帽子,甚至還帶上了面具,面具還有紫色的火光冒出來,可以說從外貌來看,馬可的這款新皮膚幾乎看不到錨點了,或許很多玩家也是因此覺得這款皮膚非常帥氣。
  • PS鋼筆摳圖的時候快速添加錨點的小技巧
    3.找一個比較直的角作為起點進行添加錨點。4.我們在畫面的邊緣上添加錨點進行拖拽就可以在錨點上出現兩個手柄。5.鋼筆快速摳圖的技巧就是我們拖拽錨點的是,一定要使手柄的方向與的邊緣是重合的或者平行,這樣我們在點擊下一個點的時候就會直接沿著邊緣,不需要再去調整上一個錨點的手柄角度了。6.我們導入素材之後,點擊左側鋼筆工具。
  • 錨點究竟是什麼東西?為何策劃對其愛不釋手,玩家卻深惡痛絕
    導讀1、錨點是什麼2、為何關菲菲偏愛錨點3、錨點對於玩家的影響4、紅寶石君總結錨點究竟是什麼呢?有的小夥伴會問了,既然錨點這麼好,為什麼玩家抗議如潮呢?請看下文你就知道為什麼玩家視錨點為「毒物」!為何菲菲偏愛錨點錨點對於設計師們是再好不過的事情!因為有了錨點的存在,設計師們節省了大量的時間去費心費力設計全新的皮膚。
  • 「皮膚錨點論」沒有錯,錯的是關菲菲
    關菲菲的皮膚錨點事件,已經過了有一段時間,大家對於「皮膚錨點論」是吐槽滿滿,最近微博上也傳出關菲菲新的言論,究竟是怎麼一回事?許哈皮來發表一下自己的看法。什麼是錨點什麼是錨點呢?王者榮耀皮膚的錨點,其實是一個引申義,錨點原址網頁中可點擊的超連結,後來被廣泛運用於產品和運營中,比如價格錨點,運營人員設置一個月20元的vip,一年只要150元,實際上大多數人都會買一年,用戶覺得超值,這是因為20元是運營設置的一個錨點,作用是讓人覺得便宜。
  • 「錨點事件」 官方終於發布1條回應看到內容後玩家笑了
    「錨點」事件迎來大結局,官方終於發布1條回應,看到內容後玩家笑了在最近的峽谷中,皮膚一款接一款的上線,讓玩家們目不暇接。而更新的速度雖然很快,但是皮膚的銷量卻並沒有想像中的那麼好。原來,因為最近的皮膚都有一個相同點,就是加強了「錨點」的佔比。想必很多玩家還不知道「錨點」是什麼,其實「錨點」就類似於定位器的存在,是不可動的。在皮膚中哪一塊是「錨點」。簡單來說,像夏侯惇的標誌性獨眼就是「錨點」,虞姬的單肩披風也是「錨點」。看了這些,大家應該也知道大概是什麼意思了。
  • 皮膚錨點是什麼?關菲菲為什麼遭到王者榮耀玩家的一致憤怒?
    皮膚錨點是什麼?關菲菲為什麼遭到王者榮耀玩家的一致憤怒?關菲菲在訪談中表示:她在王者榮耀這個團隊中,主要力推的一件事就是強化英雄的錨點。無論是做什麼樣的主題皮膚,英雄的錨點是一定要加強和貫徹這些錨點。