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

Qt Quick 2 Qml: Place text exactly in center of circle

本文关键字:Qml Quick 文本 Qt      更新时间:2023-10-16

我正在尝试将文本准确地放在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坐标上)。换句话说:当你在圆圈周围拖动时,居中的字符会稍微移动。

问候

如果你想把一个项目,比如项目A,放在另一个项目的正中心,你应该关闭A的anchors.alignWhenCentered(默认情况下是这样,以使项目画得清晰)。

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

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