这发生在 Linux 上。
执行此代码时出现问题(我正在绘制小部件的绘制事件):
painter.drawText(0, 0, 1000, 1000, 0, QString("0"), &charBoundingBox);
qDebug() << "bounding box height" << charBoundingBox.height();
qDebug() << "lineSpacing" << painter.fontMetrics().lineSpacing();
qDebug() << "leading" << painter.fontMetrics().leading();
qDebug() << "height" << painter.fontMetrics().height();
qDebug() << painter.font();
它输出:
bounding box height 11
lineSpacing 7
leading -1
height 8
QFont( "Digital-7,10,-1,5,50,0,0,0,0,0" )
注意字符边界框的高度是11
,而行距是7
。这部分是因为前导是负的,但即使没有,字体高度仍然更小。
Qt如何计算它返回的字符边界框?它的高度显然不是从fontMetrics::height
和导出的fontMetrics::leading
。