使用 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 中的项目的主要内容,如果未能解决你的问题,请参考以下文章

获取textview行数

文字两端对齐

在 MPDF 中将文本与底部对齐

XAML:将椭圆与均匀拉伸对齐到中心

Bootstrap 3.0 - 垂直对齐同一行中的 3 个面板(自动高度)

为啥设置为左对齐的单元格内容有时会右对齐(Aspose Cells)?