参考文章链接:
Qt 2D绘图之三:绘制文字、路径、图像、复合模式
绘制文字
除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函数可以获取字体的信息,它返回QFontInfo类对象。在绘制文字时会默认使用抗锯齿。
基本绘制
下面仍然在上一节的程序中进行代码演示,更改paintEvent()的内容如下:
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawText(100, 100, “qter.org-yafeilinux”);
}
这样就在(100, 100)的位置绘制了一个字符串。效果如下图所示。
控制文字的位置
我们先到QPainter的帮助文档页面,然后查看drawText()函数的重载形式,找到:
QPainter::drawText ( const QRectF & rectangle, int flags, const QString & text, QRectF * boundingRect = 0 )
第一个参数指定了绘制文字所在的矩形;
第二个参数指定了文字在矩形中的对齐方式,它由Qt::AlignmentFlag枚举类型进行定义,不同对齐方式也可以使用“|”操作符同时使用,这里还可以使用Qt::TextFlag定义的其他一些标志,比如自动换行等;
第三个参数就是所要绘制的文字,这里可以使用“\n”来实现换行;
第四个参数一般不用设置。
下面来看一个例子。为了更明显地看到文字在指定矩形中的位置,我们绘制出这个矩形。将paintEvent()函数更改如下:
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
//设置一个矩形
QRectF rect(50, 50, 300, 200);
//为了更直观地看到字体的位置,我们绘制出这个矩形
painter.drawRect(rect);
painter.setPen(QColor(Qt::red));
//这里先让字体水平居中
painter.drawText(rect, Qt::AlignHCenter, "yafeilinux");
}
现在运行程序,效果如下图所示。
可用的对齐方式如下图所示。
使用字体
为了绘制漂亮的文字,可以使用QFont类来设置文字字体。大家也可以先在帮助文档中查看该类的介绍。下面将最常用的一些设置进行演示。
将paintEvent()函数更改如下:
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
//设置一个矩形
QRectF rect(50, 50, 300, 200);
//为了更直观地看到字体的位置,我们绘制出这个矩形
painter.drawRect(rect);
painter.setPen(QColor(Qt::red));
//这里先让字体水平居中
painter.drawText(rect, Qt::AlignHCenter, "yafeilinux");
//使用字体
QFont font("宋体", 15, QFont::Bold, true);
//设置下划线
font.setUnderline(true);
//设置上划线
font.setOverline(true