在QML Text元素中对多行文本进行对齐

时间:2015-03-11 09:37:31

标签: qt qml qt5 text-alignment qt5.2

我在QML(Windows MSVC2010 OpenGL下的Qt 5.2.1)中证明文本是合理的。这是示例代码:

import QtQuick 2.2
import QtQuick.Window 2.1

Window {
    visible: true
    width: 160
    height: 60

    Text {
        text: qsTr("Hello\nWorld World2 World3")
        horizontalAlignment: Text.AlignRight
        anchors.centerIn: parent
    }
}

以下是Qt Creator设计师的外观:

Designer screenshot

以下是在Qt Creator的新项目向导生成的“Qt快速应用程序”下运行时的外观(仅在.qml文件中进行更改,如上所示):

enter image description here

如何让它在应用程序中正确显示?

这是QTBUG-30896(感谢@Meefte的链接),已在Qt 5.3中修复。 Qt 5.2.1的任何合理的解决方法(在这种情况下升级Qt版本有“外部”困难)?

2 个答案:

答案 0 :(得分:3)

作为错误修正,您可以为文本元素指定固定宽度:

import QtQuick 2.2
import QtQuick.Window 2.1

Window {
    visible: true
    width: 160
    height: 60

    Text {
        width: 160
        text: qsTr("Hello\nWorld World2 World3")
        horizontalAlignment: Text.AlignRight
        anchors.centerIn: parent
    }
}

答案 1 :(得分:1)

一些丑陋的解决方法,但至少它可以满足你的需要:)

ColumnLayout {
    anchors.centerIn: parent
    Repeater {
        id: repeater
        model: "Hello\nWorld World2 World3".split(/[\r\n]/g);
        Text {
            text: repeater.model[index]
            horizontalAlignment: Text.AlignRight
            Layout.fillWidth: true
        }
    }
}