Центральный элемент внутри qml ColumnLayout - PullRequest
0 голосов
/ 23 июня 2018

Как центрировать элемент внутри 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 голосов
/ 23 июня 2018

Если мы рассмотрим с помощью Quick Designer, мы получим следующее:

enter image description here

Как мы видим, предмет центрирован. Проблема в том, что Layout не обрабатывает положение текста внутри элемента Text, для этого вы должны использовать 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

...