使用 Layout.alignment 对齐 RowLayout 中的项目
Posted
技术标签:
【中文标题】使用 Layout.alignment 对齐 RowLayout 中的项目【英文标题】:Align items in RowLayout with Layout.alignment 【发布时间】:2021-09-13 14:41:56 【问题描述】:我想将 RowLayout 中的一些项目从左到右对齐。实际上,我正在使用给我警告的锚点:
QML MouseArea: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead
QML Row: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead
如果我在 RowLayout 级别或项目级别使用 Layout.alignment: Qt.AlignVCenter,我没有警告但视图很丑。
RowLayout
spacing: 2
anchors.fill: parent
Label
id: titleText
text: ""
horizontalAlignment: Text.AlignRight
anchors.verticalCenter: parent.verticalCenter
MouseArea
id: dragMouseArea
anchors.fill: parent
Row
anchors right: parent.right; verticalCenter: parent.verticalCenter
[...]
Item
Layout.fillWidth: true
【问题讨论】:
解决了。我必须添加Layout.fillHeight: true
并在RowLayout
的每个项目中使用Layout.alignment: Qt.AlignVCenter
而不是使用锚
【参考方案1】:
你可以在rowLayout中使用这个属性叫做布局方向
你的情况是这样的
RowLayout
spacing: 2
anchors.fill: parent
layoutDirection: "LeftToRight"
Item
id: xyz
...
...
...
尝试在布局中嵌入项目/对象时不要使用锚点
【讨论】:
好吧,但我的主要问题是在布局中垂直对齐所有项目。我该怎么做? 您可以使用 columnLayout / Column 对象进行垂直布局以上是关于使用 Layout.alignment 对齐 RowLayout 中的项目的主要内容,如果未能解决你的问题,请参考以下文章