これは 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
。