QFontMetrics の「boundingRect」関数に問題があり、正しい結果が返されません。
mfntArial = QFont("Arial", 12, QFont::Bold);
QFontMetrics objMetrics(mfntArial);
QRect rctLine = objMetrics.boundingRect("LOS");
デバッガーでは、rctLine には以下が含まれます。
x1 : 1
x2 : 26
y1 : -16
y2 : 4
これは非常に紛らわしいです。参照位置が渡されないため、x1 と y1 の両方が 0 であると予想し、x2 と y2 の両方が正であると予想します。
返された四角形は正しくありません。drawText と配置で使用すると、文字列の一部が表示されなくなります。
この関数が間違った結果を返す方法に関する他の投稿があることは知っていますが、これらを見てみましたが、役に立ちませんでした。
RedHat 7.2 で Qt5.6 を使用しています。
私も試しました:
QRect rctParent = pobjParent->geometry();
QRect rctLine = objMetrics.boundingRect(rctParent, intAlign, "LOS");
pobjParent は親ウィジェットで、rctParent には以下が含まれます。
x1 : 8
x2 : 289
y1 : 24
y2 : 447
intAlign には 33 が含まれます (左、上)
この場合、rctLine は以下を返します。
x1 : 8
x2 : 35
y1 : 24
y2 : 44
ただし、境界の四角形はまだ小さすぎて、レンダリング時に「S」の一部が欠落しています。