qml ColumnLayout中的中心元素

时间:2018-06-23 20:11:02

标签: qt qml qt5

如何将元素放在qml ColumnLayout 中?我尝试失败:

Layout.alignment: Qt.AlignCenter

代码:

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Layouts 1.11
import QtQuick.Controls 1.4

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    ColumnLayout{
        anchors.centerIn: parent
        width: parent.width
        Layout.preferredHeight:  parent.height
        visible: true

        Text{
            id: myText
            text: "My Text"
            Layout.preferredWidth: parent.width
            Layout.preferredHeight: 25
            Layout.alignment: Qt.AlignCenter
        }
    }
}

但是myText仍然不在水平居中。有想法吗?

enter image description here

1 个答案:

答案 0 :(得分:2)

如果我们通过快速设计器进行审查,则会获得以下信息:

enter image description here

我们看到该项目居中。问题是布局无法处理文本在文本项中的位置,为此,您必须使用horizontalAlignment

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Layouts 1.11
import QtQuick.Controls 1.4

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    ColumnLayout{
        anchors.centerIn: parent
        width: parent.width
        Layout.preferredHeight:  parent.height
        visible: true

        Text{
            id: myText
            text: "My Text"
            Layout.preferredWidth: parent.width
            Layout.preferredHeight: 25
            horizontalAlignment: Text.AlignHCenter
        }
    }
}

enter image description here