右对齐RowLayout中的项目

时间:2018-11-29 11:56:34

标签: qt qml

我想将RowLayout中的最后一个项目向右对齐,但是即使RowLayout的宽度大于所有子项的宽度,该项目也保持在其他项目之后。 如果我使用anchors.right:parent.right可以正常工作,但是会收到警告。

ToolBar {
    height: globals.toolBar.height
    width:parent.width
background: Rectangle {
    anchors.fill: parent
    color:"white"
}

RowLayout {
    id: row
    anchors.fill: parent

    Button{
        Layout.alignment: Qt.AlignLeft
        contentItem: Image {
           source: "images/iconmenu.png"
         }
    }
    Button {
        Layout.alignment: Qt.AlignLeft
        contentItem: Image {
           source: "images/iconget.png"
        }
        ToolTip.text: qsTr("Get Data from Panel")
        ToolTip.visible: hovered
    }
    Button {
        id:buttonAbout
        Layout.alignment:Qt.AlignRight
        font.family: fontAwesomeSolid.font
        width:15
        height: 15
        text: "\uf129"
        ToolTip.text:qsTr("about")
        ToolTip.visible: hovered
        contentItem: Text {
            anchors.fill:buttonAbout
            anchors.right:buttonAbout.right
            anchors.topMargin: 3
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCente
            text: buttonAbout.text
        }
        background:
            Rectangle{
                width:20
                height: 20
                anchors.right: parent.right
                anchors.topMargin: 20
                radius:10
                border.width: 1
                border.color:"gray"
            }
        onClicked: popup.open()
    }
    Item {
        Layout.fillWidth: true
    }
}
}

| |项目1 | |项目2 | |项目3 | ------------------ |

这是我想要的


| |项目1 | |项目2 | --------------------- |项目3 ||

2 个答案:

答案 0 :(得分:1)

似乎Row和RowLayout不允许这样存在空白空间。但这可以使用执行fillwidth:true

的组件来解决。
    Item{
        Layout.fillWidth: true
        height: buttonAbout.implicitHeight
        Button{
            id:buttonAbout
}
}

答案 1 :(得分:0)

我认为这是最终的最佳解决方案:

Button{
    id:buttonAbout
    Layout.alignment: Qt.AlignRight
}