天天看點

Qt之圖形(繪制文本)簡述基本繪制文本位置顯示不全字型

前面講解了 Qt 圖形的基本繪制,包括: 直線、弧線、矩形、橢圓、圖檔、多邊形,以及其它一些進階用法,比如:漸變、轉換等。

本節主要分享文本的繪制。主要通過 QPainter 的 darwText() 函數來實作,裡面包含多個重載函數,其中,可以通過 QRect 來指定繪制的區域,也可以通過 QPoint 來指定繪制的起始點。

QFont 類可以輔助設定文本的大小、粗細、字元間距等,然後使用 setFont() 來設定。

QFontInfo 類用來擷取字型的資訊,可以通過 fontInfo() 函數來擷取。

也可以使用更多其它輔助類來實作更好的效果,比如:QTextOption、QFontMetrics。其中 QTextOption 可以對文本換行,并設定換行方式以及文本顯示方向等效果。QFontMetrics 可以計算文本長度,進行特殊處理(例如:顯示 …)。

<a href="#%E7%AE%80%E8%BF%B0">簡述</a>

<a href="#%E5%9F%BA%E6%9C%AC%E7%BB%98%E5%88%B6">基本繪制</a>

<a href="#%E6%96%87%E6%9C%AC%E4%BD%8D%E7%BD%AE">文本位置</a>

<a href="#%E6%98%BE%E7%A4%BA%E4%B8%8D%E5%85%A8">顯示不全</a>

<a href="#qtextoption">QTextOption</a>

<a href="#qfontmetrics">QFontMetrics</a>

<a href="#%E5%AD%97%E4%BD%93">字型</a>

先來看看一些基本的效果:

Qt之圖形(繪制文本)簡述基本繪制文本位置顯示不全字型

drawText() 的重載函數比較,這裡先介紹常用的幾種繪制方式。

很多時候,我們需要控制文本的對其方式,例如:左對齊、居中對齊等。

Qt之圖形(繪制文本)簡述基本繪制文本位置顯示不全字型

從前面來看,無論我們使用哪種方式,首先都需要控制文本的繪制區域 - QRect 或起始點 QPoint,然後可以根據對齊方式來輔助控制位置的顯示 - 左對齊、右上對齊、居中對齊等。

有時,會出現類似情況,顯示不全:

Qt之圖形(繪制文本)簡述基本繪制文本位置顯示不全字型

很煩惱,有木有?沒關系,可以使用文本選項 QTextOption 來換行,也可以使用 QFontMetrics 以 … 的形式顯示。

當文本過長時,QTextOption 可用于換行:

Qt之圖形(繪制文本)簡述基本繪制文本位置顯示不全字型

除此以外,也可以設定對齊方式、換行方式以及文本顯示方向等效果。

如果文本過長,我們又不想換行,隻想把其中一部分省略為 …,那麼可以通過 QFontMetrics 來實作。

Qt之圖形(繪制文本)簡述基本繪制文本位置顯示不全字型

這裡,當長度超過 200px 時,對文本右側設定 …。

使用 QFont 可以很輕易的設定文本的大小、字型間距等效果。

Qt之圖形(繪制文本)簡述基本繪制文本位置顯示不全字型

要擷取字型資訊 QFontInfo,可以調用 fontInfo()。當然,也可以添加更多效果,比如:通過 QTransform來實作轉換,這裡我們旋轉了 45 度。

繼續閱讀