QML Row与Column布局
在QML界面开发中,布局管理是构建美观、响应式用户界面的基础。Row和Column作为Qt Quick中最常用的两种布局元素,为开发者提供了简单而强大的方式来组织界面元素。
Row与Column布局基础
1. Row水平布局
Row元素将其子元素沿水平方向(X轴)依次排列,默认不会重叠。通过spacing属性可以控制子元素之间的间距。
Row {spacing: 5 // 子元素间距5像素Rectangle { color: "red"; width: 50; height: 50 }Rectangle { color: "green"; width: 70; height: 50 }Rectangle { color: "blue"; width: 50; height: 70 }
}
关键特性:
- 子元素默认从左到右排列(layoutDirection可修改方向)
- 所有子元素高度相同(取最大子元素高度)
- 宽度由子元素自身宽度和spacing决定
2. Column垂直布局
Column元素将其子元素沿垂直方向(Y轴)依次排列,同样不会产生重叠。
Column {spacing: 10 // 子元素间距10像素Rectangle { color: "red"; width: 100; height: 40 }Rectangle { color: "green"; width: 100; height: 60 }Rectangle { color: "blue"; width: 100; height: 50 }
}
关键特性:
- 子元素默认从上到下排列
- 所有子元素宽度相同(取最大子元素宽度)
- 高度由子元素自身高度和spacing决定
布局属性深度解析
1. 公共布局属性
Row和Column共享一组核心布局属性:
- spacing:子元素之间的间距(默认0)
- layoutDirection:布局方向(Qt.LeftToRight或Qt.RightToLeft)
- padding:内边距(需Qt 5.6+)
- add/ move:添加/移动子元素时的过渡动画
2. 子元素尺寸控制
在Row/Column中,子元素可以通过以下属性控制自身尺寸行为:
Row {Rectangle {width: 50 // 固定宽度Layout.fillWidth: true // 在RowLayout中填充剩余宽度}Item {width: parent.width * 0.3 // 按比例宽度}
}
尺寸策略:
- 固定尺寸:直接设置width/height
- 比例尺寸:绑定到parent的百分比
- 填充剩余空间:在RowLayout/ColumnLayout中使用Layout.fillWidth/Height
3. 对齐方式
通过alignment属性控制子元素在主轴和交叉轴上的对齐方式:
Column {width: 200; height: 300spacing: 5alignment: Qt.AlignHCenter // 子元素水平居中Rectangle { width: 50; height: 50; color: "red" }Rectangle { width: 70; height: 50; color: "green" }
}
可用对齐标志:
- Qt.AlignLeft/AlignRight/AlignHCenter(水平)
- Qt.AlignTop/AlignBottom/AlignVCenter(垂直)
- Qt.AlignCenter(水平垂直居中)