成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解 QML UI布局管理

移動開發
QML同樣允許大家使用硬編碼的方式將位置數值直接寫到代碼中,但是這樣做首先難以適應UI的調整,其次代碼維護起來也很困難。本文將會解決這個問題。

本文介紹的是QML UI布局管理,先來對UI進行介紹一下,使用Qt做過UI的一定對QHBoxLayout, QVBoxLayout, 和QGridLayout這三個最重要也最常使用的layout managers非常熟悉。那么在QML中又是如何控制和管理UI布局的呢?那么我們這篇文章就為大家介紹這些基礎知識。

首先,QML同樣允許大家使用硬編碼的方式將位置數值直接寫到代碼中,但是這樣做首先難以適應UI的調整,其次代碼維護起來也很困難。因此我們不推薦這樣做。推薦大家使用的是以下三種布局管理器:Row,、Column、Grid,以及使用Anchor進行布局。

Row

QML 中的 Row 元素會將其子控件都排列在同一行,相互不重疊。我們還可以使用它的spacing屬性來定義子控件之間的距離。比如下列代碼就會產生如圖所示的效果:

  1. Row { spacing: 2Rectangle {  
  2.  color: "red"; width: 50; height: 50 }   
  3. Rectangle { color: "green"; width: 20; height: 50 } Rectangle { color: "blue"; width: 50; height: 20 }   
  4. }  
  5.  
  6.  

詳解 QML UI布局管理

Column

QML 中的 Column元素會將其子控件都排列在同一行,相互不重疊。我們還可以使用它的spacing 屬性來定義子控件之間的距離。比如下列代碼就會產生如圖所示的效果:

  1. view sourceprint?1 Column {     
  2.          spacing: 2     
  3.          Rectangle { color: "red"; width: 50; height: 50 }     
  4.          Rectangle { color: "green"; width: 20; height: 50 }     
  5.          Rectangle { color: "blue"; width: 50; height: 20 }     
  6.  }  

詳解 QML UI布局管理

Grid

QML 中的 Grid元素會將其子控件都均勻地排列在一個網格內,相互不重疊,每一個子控件都被放置在一個網格單元的(0,0)位置,也就是左上角。Grid的rows 和columns屬性定義網格的行數和列數,列數默認是4。我們還可以使用Grid的spacing 屬性來定義網格單元之間的距離,這里注意水平和垂直方向的spacing都是一樣的。比如下列代碼就會產生如圖所示的效果:

  1. view sourceprint?1 Grid {     
  2.          columns: 3     
  3.          spacing: 2     
  4.         Rectangle { color: "red"; width: 50; height: 50 }     
  5.         Rectangle { color: "green"; width: 20; height: 50 }     
  6.          Rectangle { color: "blue"; width: 50; height: 20 }     
  7.          Rectangle { color: "cyan"; width: 50; height: 50 }     
  8.         Rectangle { color: "magenta"; width: 10; height: 10 }     
  9.  }  

詳解 QML UI布局管理 

#p#

混合應用

我們還可以將Grid、Row 和 Column 進行混合應用。比如下面的代碼會產生如圖所示的效果:

  1. view sourceprint?01 Column {    
  2.          spacing: 2    
  3.             Rectangle { color: "red"; width: 50; height: 50 }    
  4.             Row {    
  5.                     spacing: 2    
  6.           Rectangle { color: "yellow"; width: 50; height: 50 }    
  7.           Rectangle { color: "black"; width: 20; height: 50 }    
  8.           Rectangle { color: "blue"; width:50; height: 20 }    
  9.     }    
  10.    Rectangle { color: "green"; width: 20; height: 50 }    
  11.  }  

詳解 QML UI布局管理

Anchor

每一個item 都可以被認為具有 7 條隱藏的“anchor lines":left、 horizontalCenter、 right、 top、 verticalCenter、baseline、以及bottom,如下圖所示:詳解 QML UI布局管理

其中baseline是指的文本所在的線,在上圖中并未標出,如果item沒有文字的話baselinw就和top的位置是相同的。除此之外,Anchor系統還提供了margins 和offsets。margins 是指一個item和外界之間所留有的空間,而offsets 則可以通過使用 center anchor lines來進行布局。如下圖所示:

詳解 QML UI布局管理 

#p#

使用 QML anchoring系統,我們可以定義不同items之間的anchor lines之間的關系。例如:

  1. view sourceprint?1 Rectangle { id: rect1; ... }    
  2. Rectangle { id: rect2; anchors.left: rect1.right; anchors.leftMargin: 5; ... }  

詳解 QML UI布局管理

我們還可以使用多個anchors:

  1. view sourceprint?1 Rectangle { id: rect1; ... }    
  2. Rectangle { id: rect2; anchors.left: rect1.right; anchors.top: rect1.bottom; ... }  

詳解 QML UI布局管理

通過定義多個水平或垂直的anchors,我們還可以控制item的大小,例如:

  1. view sourceprint?1 Rectangle { id: rect1; x: 0; ... }    
  2. Rectangle { id: rect2; anchors.left: rect1.right; anchors.right: rect3.left; ... }    
  3. Rectangle { id: rect3; x: 150; ... }  

詳解 QML UI布局管理

注意:出于效率方面的考慮,我們只允許對一個item的鄰居和之接父親使用anchor定義。比如下面的定義是不合法的:

  1. Item {    
  2.      id: group1    
  3.       Rectangle { id: rect1; ... }    
  4.  }    
  5.  Item {    
  6.      id: group2    
  7.       Rectangle { id: rect2; anchors.left: rect1.right; ... } <BR> }  

小結:詳解 QML UI布局管理的內容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: 網絡轉載
相關推薦

2011-07-04 16:57:36

QT 布局 界面

2011-06-24 17:22:29

Qt Quick QML

2011-07-01 14:55:28

Qt QML C++

2021-08-12 15:01:09

鴻蒙HarmonyOS應用

2011-05-31 09:36:46

Android 布局屬性

2010-05-28 08:52:18

SVN項目

2020-11-30 14:09:17

HarmonyOS

2020-11-17 11:48:44

HarmonyOS

2021-01-20 13:50:36

鴻蒙HarmonyOS應用開發

2010-08-16 16:27:42

DIV布局屬性

2021-04-25 06:12:19

Java內存布局JVM

2012-08-22 10:37:07

Word 2013Office 2013

2017-01-19 21:54:10

iOS布局框架Masonry

2012-08-23 10:07:47

Word 2013

2015-06-24 10:17:24

UI流式布局

2020-11-25 12:02:02

TableLayout

2013-01-08 16:05:23

Android開發布局ViewStub

2010-09-02 13:39:51

CSS

2024-10-24 17:13:55

WinformUI多線程

2018-06-08 15:28:31

Android開發程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区二区不卡在线观看 | 国产精品亚洲一区 | 久久夜视频 | 欧美一区在线视频 | 欧美男人天堂 | 国产一区91精品张津瑜 | 国产精品日产欧美久久久久 | 九九热视频这里只有精品 | 国产精品久久久久久久免费观看 | 欧美日韩一区在线播放 | 久久国产精品免费 | 日韩一区二 | 波多野结衣一区二区 | 精品在线免费看 | 精品欧美一区二区三区久久久 | 久久久精品久久 | 国产精品色 | 成人在线播放 | 成人美女免费网站视频 | 国产成人精品午夜视频免费 | 视频在线一区二区 | 久久国产秒 | 99精品一区二区 | 性欧美xxxx | 最新中文在线视频 | 在线高清免费观看视频 | 午夜天堂精品久久久久 | 91综合网 | 久久中文字幕一区 | 99国产精品99久久久久久 | 亚洲国产精品久久久 | 成人午夜性成交 | 免费看黄色视屏 | 日韩视频一区二区三区 | 日韩精品一区二区三区视频播放 | 9191成人精品久久 | 不卡在线一区 | 国产美女永久免费无遮挡 | 久久精品亚洲精品国产欧美 | 中文字幕一区二区三区四区五区 | 国产综合久久久 |