我想做一個相當簡單的繪圖,在圓圈中心寫上兩段文字。我的代碼: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