qml之布局管理器(Qt Quick Layouts)

简介: qml之布局管理器(Qt Quick Layouts)

概述

Qt Quick Layouts 是一组用于在用户界面中排列项目的 QML 类型。
与定位器相比,Qt Quick Layouts 还可以调整其项目的大小。😃
这使得它们非常适合可调整大小的用户界面。 由于布局是 items ,因此它们可以嵌套。


类型介绍

Layout 类型 官方描述
ColumnLayout Identical to GridLayout, but having only one column
GridLayout Provides a way of dynamically arranging items in a grid
Layout Provides attached properties for items pushed onto a GridLayout, RowLayout or ColumnLayout
RowLayout Identical to GridLayout, but having only one row
StackLayout Stack of items where only one item is visible at a time

Layout QML Type

附加属性 (Attached Properties)

  • alignment : Qt.Alignment

此属性指定Item 在其占据的单元格内的对齐方式。
默认值为 0,这意味着它将是 Qt.AlignVCenter | Qt.AlignLeft
如果仅指定了水平或垂直标志,这些默认值也适用:
如果仅指定水平标志,则默认垂直标志将为 Qt.AlignVCenter
如果仅指定垂直标志,则默认水平标志将为 Qt.AlignLeft .
有效对齐是以下标志的组合:


Qt::AlignLeft
Qt::AlignHCenter
Qt::AlignRight
Qt::AlignTop
Qt::AlignVCenter
Qt::AlignBottom
Qt::AlignBaseline


  • row : int

此属性用于指定 GridLayout 中item的行位置。
如果未设置列和此属性,则由布局为item 分配一个单元格。

默认值为 0。

  • column : int

此属性用于指定 GridLayout 中Item的列位置。
如果未设置行和此属性,则由布局为项目分配单元格。

默认值为 0。

  • rowSpan : int

此属性用于指定 GridLayout 中Item的行跨度。

默认值为 1。

  • columnSpan : int

此属性用于指定 GridLayout 中Item的列跨度。

默认值为 0。


  • topMargin : real
  • rightMargin : real
  • leftMargin : real
  • bottomMargin : real

指定Item的四围边距。 如果未设置该值,它将使用margins中的值。

  • margins : real


将 Item之外的边距设置为都具有相同的值。Item本身不评估自己的边距。父项有责任决定是否要评估边距。
具体来说,边距仅由 ColumnLayout、RowLayout、GridLayout 和其他类似布局的容器评估,
例如 SplitView,其中项目的有效单元格大小将随着边距的增加而增加。
因此,如果一个有边距的item 是另一个item 的子项,它的位置、大小和隐式大小将保持不变。将边距与对齐相结合将对齐项目,包括其边距。
例如,上边距为 1,下边距为 9 的垂直居中item 将导致单元格内的item 有效对齐在中心上方 4 个像素处。

默认值为 0。

这个属性是在 QtQuick.Layouts 1.2 中引入的。


  • maximumHeight : real
  • maximumWidth : real
  • minimumHeight : real
  • minimumWidth : real

默认值是item的隐式最大/小值。

如果项目是布局,则隐式最大/小值将是布局可以具有的最值,其中的任何item都不会超出最值。
任何其他项目的隐式最大值是 Number.POSITIVE_INFINITY,最小值为 0。

将此值设置为 -1 会将宽度/高度重置为其隐式最值。


  • preferredHeight : real
  • preferredWidth : real

此属性保存布局中项目的首选高/宽度。
如果首选值为 -1,它将被忽略,布局将使用implicitHeight /implicitWidth代替。 默认值为 -1。


  • fillHeight : bool
  • fillWidth : bool

如果此属性为 true,则项目将在给定约束的同时尽可能高。
如果该属性为 false,则项目的固定高度将设置为首选高度。
默认为 false,但布局本身除外,默认为 true。


网格布局(GridLayout QML Type)说明

GridLayout 提供一种在网格中动态排列项目的方法.
如果调整 GridLayout 的大小,则布局中的所有item都将重新排列。 它类似于基于小部件的 QGridLayout。
GridLayout 元素的所有可见子元素都将属于该布局。 如果你想要一个只有一行或一列的布局,你可以使用 RowLayoutColumnLayout
这些提供了更方便的 API,并提高了可读性。



默认情况下,item 将根据流属性进行排列。 流属性的默认值为GridLayout.LeftToRight
如果指定了 columns属性,它将被视为布局可以有多少列的最大限制,然后自动定位回到下一行的开头。 columns 属性仅在 flow 为GridLayout.LeftToRight时使用。


rows 属性以类似的方式工作,但项目是垂直自动定位的。 rows 属性仅在 flow 为GridLayout.TopToBottom 时使用。
您可以通过设置 Layout.row 和 Layout.column 属性来指定您希望item占据哪个单元格。
您还可以通过设置 Layout.rowSpan 或 Layout.columnSpan 属性来指定行跨度或列跨度。

示例:

GridLayout {
    id: grid
    columns: 3
    Text { text: "Three"; font.bold: true; }
    Text { text: "words"; color: "red" }
    Text { text: "in"; font.underline: true }
    Text { text: "a"; font.pixelSize: 20 }
    Text { text: "row"; font.strikeout: true } 
  }

StackLayout 中的项目支持以下附加属性:

Layout.row Layout.column 
Layout.rowSpan 
Layout.columnSpan
Layout.minimumWidth 
Layout.minimumHeight 
Layout.preferredWidth
Layout.preferredHeight 
Layout.maximumWidth 
Layout.maximumHeight
Layout.fillWidth 
Layout.fillHeight 
Layout.alignment 
Layout.margins
Layout.leftMargin 
Layout.rightMargin 
Layout.topMargin
Layout.bottomMargin

GridLayout 属性说明


  • layoutDirection : enumeration
    此属性保存网格布局的布局方向 - 它控制item是从左到右还是从右到左布局。
    如果指定了 Qt.RightToLeft,则左对齐的项目将右对齐,右对齐的item将左对齐。
    这个属性是在 QtQuick.Layouts 1.1 中引入的。
    可能的值:
  • Qt.LeftToRight (默认) - item从左到右排列。
  • Qt.RightToLeft - item从右到左排列。
  • flow : enumeration
    此属性保存未设置显式单元格位置的项目的流向。
    它与 columns 或 rows 属性一起使用,它们分别指定何时将流重置到下一行或下一列。
    可能的值为:
  • GridLayout.LeftToRight(默认)- item彼此相邻放置,然后换行到下一行。
  • GridLayout.TopToBottom - item从上到下彼此相邻放置,然后包裹到下一列。

堆栈布局(StackLayout QML Type)说明

StackLayout 类提供了一堆items,其中一次只有一个item可见.

当前可见项可以通过设置 currentIndex 属性来修改。 该索引对应于 StackLayout 的子项的顺序。
与大多数其他布局相比,子项的 Layout.fillWidthLayout.fillHeight 属性默认为 true。
因此,子项默认填充以匹配 StackLayout 的大小,只要它们的 Layout.maximumWidthLayout.maximumHeight 不阻止它。
通过将项目重新设置为布局,将项目添加到布局中。 同样,删除是通过从布局中重新设置项目来完成的。 这两个操作都会影响布局的 count 属性。

示例:

StackLayout {
    id: layout
    anchors.fill: parent
    currentIndex: 1
    Rectangle {
        color: 'teal'
        implicitWidth: 200
        implicitHeight: 200
    }
    Rectangle {
        color: 'plum'
        implicitWidth: 300
        implicitHeight: 200
    } }

StackLayout 中的项目支持以下附加属性:

Layout.minimumWidth
Layout.minimumHeight 
Layout.preferredWidth 
Layout.preferredHeight
Layout.maximumWidth 
Layout.maximumHeight 
Layout.fillWidth
Layout.fillHeight

StackLayout 属性说明


  • count : int
    此属性保存属于布局的项目数。只有作为 StackLayout 子项的item才会成为布局的候选对象。
  • currentIndex : int
    此属性保存当前在 StackLayout 中可见的子项的索引。 默认情况下,空布局为 -1,否则默认为 0(指第一项)。
目录
相关文章
|
4月前
|
数据可视化 JavaScript 前端开发
Qt Quick 定时技巧全攻略:从底层原理到高级应用(二)
Qt Quick 定时技巧全攻略:从底层原理到高级应用
205 0
|
4月前
|
监控 前端开发 JavaScript
Qt Quick调试之道:跟踪、输出与打印信息的全面攻略
Qt Quick调试之道:跟踪、输出与打印信息的全面攻略
223 0
|
4月前
|
编解码 容器
QML/Qt Quick anchors.fill 的使用(二)
QML/Qt Quick anchors.fill 的使用
130 0
|
4月前
|
安全 数据处理 C++
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
874 3
|
3天前
QT6使用CMamke将qml打包成dll
QT6使用CMamke将qml打包成dll
7 0
|
4月前
|
开发框架 UED 开发者
QML(Qt Quick) 按钮设计指南
QML(Qt Quick) 按钮设计指南
310 0
|
4月前
|
监控 JavaScript 测试技术
Qt Quick 定时技巧全攻略:从底层原理到高级应用(一)
Qt Quick 定时技巧全攻略:从底层原理到高级应用
130 0
|
4月前
|
前端开发 JavaScript UED
深度解析Qt背景设计:从基础到高级,从Widget到Quick(三)
深度解析Qt背景设计:从基础到高级,从Widget到Quick
198 0
|
4月前
|
存储 编解码 JavaScript
深度解析Qt背景设计:从基础到高级,从Widget到Quick(二)
深度解析Qt背景设计:从基础到高级,从Widget到Quick
208 0
|
4月前
|
前端开发 图形学 UED
深度解析Qt背景设计:从基础到高级,从Widget到Quick(一)
深度解析Qt背景设计:从基础到高级,从Widget到Quick
434 0