注意:以下代码是在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();