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,"右下角");

Qt绘图高级编程-绘制文本_第1张图片

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();

Qt绘图高级编程-绘制文本_第2张图片

你可能感兴趣的:(Qt-绘图,qt,drawText,ui)