TextMetrics应该告诉您呈现文本字符串的大小,但它似乎与 text 实际呈现文本的方式不匹配,特别是当字符串包含空格时。这个问题在某些字体和pointSize
或pixelSize
设置中非常糟糕,但是随着其他字体或大小的增加,问题就消失了。
下面的代码创建与boundingRect
返回的TextMetrics完全相同的高度和宽度的Retangles,它应该覆盖呈现文本的每个像素。
但是,这些矩形比呈现的文本略窄,导致最后一个字符挂在矩形之外,该矩形被下一个矩形覆盖(可以看到最后的'd‘字符挂在最后一个矩形的边缘之外)。
怎么解决这个问题?
是否有可靠的方法来准确地了解,,呈现文本字符串的边框?
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
ApplicationWindow {
visible: true
width: 800
height: 100
color: "grey"
TextMetrics {
id: metrics
font.family: "Helvetica" // or try "Ubuntu"
//font.pixelSize: 12
font.pointSize: 14
text: "H d" // more spaces causes more corruption
}
Row {
Repeater {
model: 5
Rectangle {
clip: false
color: "yellow"
width: metrics.boundingRect.width
height: metrics.boundingRect.height
Text {
text: metrics.text
font: metrics.font
}
}
}
}
}
发布于 2020-11-09 10:20:10
@MarkCh在问题的注释中的解决方案是对我有效的解决方案,它比添加TextMetrics
元素更简单。这是我的全部解决办法:
Rectangle {
clip: false
color: "yellow"
width: text.contentWidth
height: text.contentHeight
Text {
id: text
text: "H d"
anchors.fill: parent
}
}
https://stackoverflow.com/questions/46596318
复制相似问题