00. 目录

01. 概述

Qt中除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函

数可以获取字体的信息,它返回QFontInfo类对象。在绘制文字时会默认使用抗锯齿。

02. 开发环境

Windows系统:Windows10

Qt版本:Qt5.15或者Qt6

03. 基本绘制

程序示例

void Widget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);

    painter.drawText(100, 100, "hello Qt");
}

执行结果
【Qt】2D绘图之绘制文字_Qt绘制文字

在(100, 100)的位置绘制了一个字符串。

04. 使用范围绘制文字

函数原型:
【Qt】2D绘图之绘制文字_drawText_02

第一个参数指定了绘制文字所在的矩形;第二个参数指定了文字在矩形中的对齐方式,它由Qt::AlignmentFlag枚举类型进行定义,不同对齐方式也可以使用“|”操作符同时使用,这里还可以使用Qt::TextFlag定义的其他一些标志,比如自动换行等;第三个参数就是所要绘制的文字,这里可以使用“\n”来实现换行;第四个参数一般不用设置。
【Qt】2D绘图之绘制文字_QPainter_03

程序示例

void Widget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);

    //设置一个矩形
    QRectF rect(50, 50, 300, 240);

    painter.drawRect(rect);

    painter.setPen(QColor(Qt::red));

    //水平居中显示 垂直居中
    painter.drawText(rect, Qt::AlignHCenter | Qt::AlignVCenter, "hello Qt");

}

执行结果
【Qt】2D绘图之绘制文字_QPainter_04

05. 使用字体绘制文字

为了绘制漂亮的文字,可以使用QFont类来设置文字字体。

程序示例

void Widget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);

    QFont font("黑体", 15, QFont::Bold, true);

    //设置下划线
    font.setUnderline(true);

    //设置上划线
    font.setOverline(true);
    //设置字母大小写
    font.setCapitalization(QFont::SmallCaps);
    //设置字符间距
    font.setLetterSpacing(QFont::AbsoluteSpacing, 10);

    //使用字体
    painter.setFont(font);
    painter.setPen(Qt::blue);
    painter.drawText(120, 80, tr("hello qt"));

    painter.translate(50, 50);
    painter.rotate(90);
    painter.drawText(0, 0, tr("湖北武汉"));

}

创建了QFont字体对象,使用的构造函数为QFont::QFont ( const QString & family,int pointSize = -1, int weight = -1, bool italic = false ),第一个参数设置字体的family属性,这里使用的字体族为黑体,可以使用QFontDatabase类来获取所支持的所有字体;第二个参数是点大小,默认大小为12;第三个参数为weight属性,这里使用了粗体;最后一个属性设置是否使用斜体。然后我们又使用了其他几个函数来设置字体的格式,最后调用setFont()函数来使用该字体,并使用drawText()函数的另一种重载形式在点(120, 80)绘制了文字。后面又将坐标系统平移并旋转,然后再次绘制了文字。运行程序,效果如下图所示。
【Qt】2D绘图之绘制文字_Qt_05

06. 附录

源码下载:【Qt】2D绘图之绘制文字.rar