QFontMetrics boundingRect
QFontMetrics boundingRect
我在使用 QFontMetrics 'boundingRect' 函数时遇到问题,它没有 return 正确的结果。
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 都为正。
矩形 returned 不正确,如果我将它与 drawText 和对齐一起使用,则部分字符串会从显示中丢失。
我知道还有其他关于此函数如何return产生错误结果的帖子,我看过这些帖子,但它们对我没有帮助。
我在 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 returns:
x1 : 8
x2 : 35
y1 : 24
y2 : 44
但是边界矩形仍然很小,渲染时缺少 'S' 的一部分。
我已经通过计算我认为最宽字符之一的宽度解决了我的问题,'M'。
QRect rctCapM = objMetrics.boundingRect(rctParent, intAlign, "M");
然后我以此为典型,然后计算其他字符串所需的边界矩形:
QRect rctBounds(0, 0, rctCapM.width() * strLine.length(), rctCapM.height());
其中 'strLine' 包含要显示和计算边界的字符串,这对我有用。
我在使用 QFontMetrics 'boundingRect' 函数时遇到问题,它没有 return 正确的结果。
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 都为正。
矩形 returned 不正确,如果我将它与 drawText 和对齐一起使用,则部分字符串会从显示中丢失。
我知道还有其他关于此函数如何return产生错误结果的帖子,我看过这些帖子,但它们对我没有帮助。
我在 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 returns:
x1 : 8
x2 : 35
y1 : 24
y2 : 44
但是边界矩形仍然很小,渲染时缺少 'S' 的一部分。
我已经通过计算我认为最宽字符之一的宽度解决了我的问题,'M'。
QRect rctCapM = objMetrics.boundingRect(rctParent, intAlign, "M");
然后我以此为典型,然后计算其他字符串所需的边界矩形:
QRect rctBounds(0, 0, rctCapM.width() * strLine.length(), rctCapM.height());
其中 'strLine' 包含要显示和计算边界的字符串,这对我有用。