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 元素的所有可见子元素都将属于该布局。 如果你想要一个只有一行或一列的布局,你可以使用 RowLayout 或 ColumnLayout。
这些提供了更方便的 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.fillWidth 和 Layout.fillHeight 属性默认为 true。
因此,子项默认填充以匹配 StackLayout 的大小,只要它们的 Layout.maximumWidth 或 Layout.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(指第一项)。
目录
相关文章
|
数据可视化 JavaScript 前端开发
Qt Quick 定时技巧全攻略:从底层原理到高级应用(二)
Qt Quick 定时技巧全攻略:从底层原理到高级应用
889 0
|
监控 前端开发 JavaScript
Qt Quick调试之道:跟踪、输出与打印信息的全面攻略
Qt Quick调试之道:跟踪、输出与打印信息的全面攻略
1430 0
|
编解码 容器
QML/Qt Quick anchors.fill 的使用(二)
QML/Qt Quick anchors.fill 的使用
768 0
|
安全 数据处理 C++
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
3860 3
QT6使用CMamke将qml打包成dll
QT6使用CMamke将qml打包成dll
874 0
|
开发框架 UED 开发者
QML(Qt Quick) 按钮设计指南
QML(Qt Quick) 按钮设计指南
1490 0
|
监控 JavaScript 测试技术
Qt Quick 定时技巧全攻略:从底层原理到高级应用(一)
Qt Quick 定时技巧全攻略:从底层原理到高级应用
861 0
|
前端开发 JavaScript UED
深度解析Qt背景设计:从基础到高级,从Widget到Quick(三)
深度解析Qt背景设计:从基础到高级,从Widget到Quick
815 0
|
存储 编解码 JavaScript
深度解析Qt背景设计:从基础到高级,从Widget到Quick(二)
深度解析Qt背景设计:从基础到高级,从Widget到Quick
1084 0
|
前端开发 图形学 UED
深度解析Qt背景设计:从基础到高级,从Widget到Quick(一)
深度解析Qt背景设计:从基础到高级,从Widget到Quick
1608 0

推荐镜像

更多
  • qt