我想做一个相当简单的绘图,在圆圈中心写上两段文字。我的代码:QPainter与Qt :: AlignCenter不能正确居中文本
painter->drawText(QRectF(0, 0, m_iSize, m_iSize), Qt::AlignCenter, m_sAlias + "\n" + m_sCode);
其中m_iSize
是圆的大小,m_sAlias
就像“R1”和m_sCode
短文本是像“31”另一个短文本。
问题是,上面的代码将绘制两行文本,以便它们在水平方向上恰好相隔一个像素。不幸的是它清晰可见。我怀疑“\ n”必须对它做些什么,但我不知道。也没有如何解决它。
我目前的解决方法是分别绘制的文本是这样的:
painter->drawText(QRectF(1, 0, m_iSize, m_iSize), Qt::AlignCenter, m_sAlias + "\n");
painter->drawText(QRectF(0, 0, m_iSize, m_iSize), Qt::AlignCenter, "\n" + m_sCode);
但是,这仅仅是愚蠢的,即使它actully按预期工作(我移顶部的文本一个像素向右)。
我在这里错过了什么?如果需要,我可以提供截图。
屏幕截图:
错误(第一个行代码),线通过一个像素从移动彼此
正确(第二两行码),线对齐正确
这将很高兴有一个截图。 –
在哪个平台上,以什么尺寸,字体......你做这个顺便说一句吗?我无法重现这一点。 –
@marius_linux添加了一些屏幕截图(您可能需要放大以更清晰地看到它,但即使在这种尺寸下,它也是可见的,尤其是比较)。我在Windows 8 64位上使用QW 5.5与MingW(32位)。我不设置任何字体,大小或其他任何内容,因此它是默认值。如果重要的话,我正在使用Qt的融合风格。 – Resurrection