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");
}
执行结果
在(100, 100)的位置绘制了一个字符串。
04. 使用范围绘制文字
函数原型:
第一个参数指定了绘制文字所在的矩形;第二个参数指定了文字在矩形中的对齐方式,它由Qt::AlignmentFlag枚举类型进行定义,不同对齐方式也可以使用“|”操作符同时使用,这里还可以使用Qt::TextFlag定义的其他一些标志,比如自动换行等;第三个参数就是所要绘制的文字,这里可以使用“\n”来实现换行;第四个参数一般不用设置。
程序示例
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");
}
执行结果
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)绘制了文字。后面又将坐标系统平移并旋转,然后再次绘制了文字。运行程序,效果如下图所示。
06. 附录
源码下载:【Qt】2D绘图之绘制文字.rar