Qt绘图高级编程-绘制文本

注意:以下代码是在paintEvent函数中使用的,坐标是在文本的左下角。

1、设置字体样式

    /*-----------1、设置字体样式-----------*/
    //设置画家写字的字体
    //字体名, 字体大小,粗体,是否斜体
    QFont font( "楷体",15, QFont::Bold ,true);
    painter.setFont(font);//将字体交给画家

    //设置画笔
    QPen pen(QBrush(Qt::red) ,1);
    painter.setPen(pen);

2、矩形的左下角、中心、右下角绘制文本

    //定义参考矩形
    QRect  r1(100,100,200,200);
    painter.drawRect(r1);
    
   //写文本,坐标为文字的左下角坐标
    painter.drawText(100,100, "老师!");

     pen.setColor(Qt::black);
    painter.setPen(pen);//黑色交给画家
    //在矩形内写文本
    painter.drawText(r1, "你好啊!");

    //在矩形中心位置写文本
    pen.setColor(Qt::blue);
    painter.setPen(pen);//画笔交给画家
    painter.drawText(r1, Qt::AlignCenter,"居中");

    //在矩形右下角写文本
    pen.setColor(Qt::green);
    painter.setPen(pen);//画笔交给画家
    painter.drawText(r1,
     Qt::AlignRight| Qt::AlignBottom,"右下角");

在这里插入图片描述

3、给定宽度绘制文本

QRect bdRect = painter.boundingRect( QRect(0,0,300,0 ), Qt::TextWordWrap,str );** 300是给定矩形的宽度绘制文本,超出部分文本自动换行。**

   /*-----------3、计算实际所需矩形大小-----------*/
    //设置画笔 颜色 粗细
    QPen pen1(QBrush(Qt::blue) ,3);
    painter.setPen(pen1);

    //在矩形内写大量文字
    QString str= "你好啊,这是测试文字换行!";

    //获取给定宽度,文本, 所需要的实际矩形
    //参数:指定的矩形、超出的文字部分需要换行、文字内容str
    //300是给定矩形宽度,超出这个宽度文本自动换行
    QRect bdRect = painter.boundingRect(
         QRect(0,0,300,0 ), Qt::TextWordWrap,str    );
    //绘制返回的矩形
    painter.drawRect(bdRect);

    //验证一下能不能全部包住
    painter.drawText( bdRect ,Qt::TextWordWrap,str );

4、获取文本在给定字体下的宽度和高度

    /*--------4、获取一行文本在给定字体下的长度,宽度--------*/
    QFontMetricsF fm ( painter.font()  );
    qreal w=  fm.width(str);//宽度根据文本来确定
    qreal h=  fm.height();//高度是根据字体就可以确定
    qDebug()<<"文字宽度:"<<w<<"    "<<"文字高度:"<<h <<"    "<<"文字最大宽度:"<<fm.maxWidth();

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

守静向光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值