Ich habe Probleme mit der QFontMetrics 'BoundingRect' -Funktion, es gibt nicht die richtigen Ergebnisse zurück.QFontMetrics BoundingRect
mfntArial = QFont("Arial", 12, QFont::Bold);
QFontMetrics objMetrics(mfntArial);
QRect rctLine = objMetrics.boundingRect("LOS");
Im Debugger rctLine enthält:
x1 : 1
x2 : 26
y1 : -16
y2 : 4
Das ist sehr verwirrend, ich würde x1 und y1 bis beide 0 sein erwarten, da keine Referenzposition passiert ist, und ich würde beide x2 erwarten und y2 ist positiv.
Das zurückgegebene Rechteck ist nicht korrekt und wenn ich es mit drawText und Ausrichtung verwende, dann fehlt ein Teil der Zeichenfolge in der Anzeige.
Ich weiß, es gibt andere Beiträge in Bezug darauf, wie diese Funktion die falschen Ergebnisse zurückgibt, und ich habe diese angesehen, sie haben mir nicht geholfen.
Ich verwende Qt5.6 auf RedHat 7.2.
Ich habe auch versucht:
QRect rctParent = pobjParent->geometry();
QRect rctLine = objMetrics.boundingRect(rctParent, intAlign, "LOS");
Wo pobjParent ist das übergeordnete Widget und rctParent enthält:
x1 : 8
x2 : 289
y1 : 24
y2 : 447
intAlign 33 enthält (links, oben)
In diesem Fall rctLine Rückkehr:
x1 : 8
x2 : 35
y1 : 24
y2 : 44
Aber der Begrenzungsrextangle ist immer noch zu klein und ein Teil des 'S' fehlt beim Rendern.
Official Qt documentation on QFontMetrics
Gleiches Problem [hier] (http://stackoverflow.com/questions/27336001/qfontmetrics-returns-inaccurate-results). Dokumentation [hier] (http://doc.qt.io/qt-4.8/qfontmetrics.html#boundingRect-2). – LogicStuff