绘制文字(QFont字体)

QPainter绘制文字的话使用的函数为 QPainter::drawText()

QPainter::drawText()有多种重载方式。

 根据坐标直接绘画文字:

void Widget::paintEvent(QPaintEvent *event)//绘图事件
{
    QPainter painter(this);
    painter.translate(100,100);//移动坐标
    painter.drawText(QPoint(0,0),tr("label"));
    painter.drawText(50,50,tr("painter"));

}

 

给定的矩形中绘制文字:

  • rectangle为矩形
  • flags 对齐方式
  • text   内容
  • boundingRect 为边框样式 (一般不会使用)

 

void Widget::paintEvent(QPaintEvent *event)//绘图事件
{
    QPainter painter(this);
    painter.translate(100,100);//移动坐标
    QRect rect(0,0,50,50);
    painter.drawText(rect,Qt::AlignCenter,tr("PQ"));
}

 使用矩阵边框:

QRect::adjusted(int dx1,int dy1,int dx2,int dy2)

返回一个新矩形,其中 dx1、dy1、dx2 和 dy2 分别添加到此矩形的现有坐标中。

void Widget::paintEvent(QPaintEvent *event)//绘图事件
{
    QPainter painter(this);
    painter.translate(100,100);//移动坐标
    const QRect rectangle = QRect(0, 0, 100, 50);//创建一个矩阵
    
    QRect boundingRect;//创建一个矩阵,接收文本的矩阵
    painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);

    QPen pen = painter.pen();
    pen.setStyle(Qt::DotLine);
    painter.setPen(pen);
    //adjusted返回一个新矩形
    //绘制矩阵
    painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));
    
    //adjusted返回一个新矩形
    //绘制矩阵
    pen.setStyle(Qt::DashLine);
    painter.setPen(pen);
    painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width()));
}

 

 绘制文字缺少不了字体,以下介绍字体。

QFont(字体)

QFont 可以看作是对系统上一种或多种字体的查询。

构造函数:

 

 常用函数:

key()返回字体的键
setBold(bool)设置是否为粗体
setCapitalization()设置字体的大小写
setFamilies(QStringList)设置字体种类列表
setFamily()设置字体种类(不区分大小写)
setKerning(bool)设置是否自动调整间距(默认启用)
setLetterPaccing()设置字母间距和间距类型
setWordSpacing()设置字体间距

setOverline(bool)

setUnderline(bool)

设置上划线和下划线
setStrikeOut()设置删除线
setPixelSize()设置字体像素

setPointSize()

setPointSizeF()

设置字体磅数(大于0)
setStretch()设置拉伸系数
setStyl()设置样式
setWeight()设置字体粗细
setStyleStrategy()设置字体的样式策略

QFont::Style(字体样式)

QFont::StyleNormal无样式文本中使用的普通字形
QFont::StyleItalic专为表示斜体文本而设计的斜体字形
QFont::StyleOblique具有斜体外观的字形,通常基于无样式的字形,但不会为了表示斜体文本而进行微调

在QPainter中设置字体

使用QPainter::setFont()设置字体

void Widget::paintEvent(QPaintEvent *event)//绘图事件
{
    QPainter painter(this);
    painter.translate(100,100);//移动坐标
    QFont font;
    font.setBold(true);//设置为粗体
    font.setStyle(QFont::StyleNormal);//普通样式
    font.setWordSpacing(2);//设置间距
    font.setPixelSize(50);//设置字体大小
    font.setUnderline(true);//设置下划线
    painter.setFont(font);//设置字体
    painter.setPen(Qt::red);//设置画笔
    QRect rect(0,0,100,100);
    painter.drawText(rect,Qt::AlignCenter,tr("2022"));
}

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值