前面讲解了 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>
先来看看一些基本的效果:

drawText() 的重载函数比较,这里先介绍常用的几种绘制方式。
很多时候,我们需要控制文本的对其方式,例如:左对齐、居中对齐等。
从前面来看,无论我们使用哪种方式,首先都需要控制文本的绘制区域 - QRect 或起始点 QPoint,然后可以根据对齐方式来辅助控制位置的显示 - 左对齐、右上对齐、居中对齐等。
有时,会出现类似情况,显示不全:
很烦恼,有木有?没关系,可以使用文本选项 QTextOption 来换行,也可以使用 QFontMetrics 以 … 的形式显示。
当文本过长时,QTextOption 可用于换行:
除此以外,也可以设置对齐方式、换行方式以及文本显示方向等效果。
如果文本过长,我们又不想换行,只想把其中一部分省略为 …,那么可以通过 QFontMetrics 来实现。
这里,当长度超过 200px 时,对文本右侧设置 …。
使用 QFont 可以很轻易的设置文本的大小、字体间距等效果。
要获取字体信息 QFontInfo,可以调用 fontInfo()。当然,也可以添加更多效果,比如:通过 QTransform来实现转换,这里我们旋转了 45 度。