Qt Quick 2 Qml:将文字准确放在圆圈的中心

时间:2017-04-07 17:47:13

标签: c++ qt qml qtquick2

我正在尝试将文本准确地放在Qml中的圆心:

Rectangle {
    id: rect
    width: 20
    height: 20
    radius: width/2
    color: "red"
    anchors.verticalCenter: parent.verticalCenter

    Label { // or Text
        anchors.centerIn: parent // or anchors.fill: parent
        text: "A"
        color: "white"
        verticalAlignment: Text.AlignVCenter
        horizontalAlignment: Text.AlignHCenter
    }

    //EDIT: For testing different locations:
    MouseArea {
        anchors.fill: parent        
        drag.target: rect
        drag.axis: Drag.XAxis
    }
}

问题在于文本略微偏离中心(向左和向下移动)。我测试了不同的尺寸和字符,但都表现出同样的问题。有没有更好的方法将文本准确放在中心?

[编辑] :字体偏移似乎与屏幕上的位置有关(但我无法确定是什么原因造成的 - 它发生在奇数和偶数x坐标上)。换句话说:当您在圆圈中拖动时,居中的角色会稍微移动。

此致

2 个答案:

答案 0 :(得分:1)

如果你想把一个项目,比如项目A,放在另一个项目的确切中心,你应该关闭A anchors.alignWhenCentered(默认情况下这是真的,以便使项目被绘制清脆)。

答案 1 :(得分:0)

这是我的方式,不是很优雅,但它有效...

Text {
    y: -4
    text: "A"
    color: "white"
    font.pixelSize: 20
    anchors.horizontalCenter: rect.horizontalCenter
}