[Qt教程] 第13篇 2D绘图(三)绘制文字

简介:
楼主
  发表于 2013-4-25 23:04:46  | 查看: 720 | 回复: 0
绘制文字
版权声明

该文章原创于Qter开源社区,作者yafeilinux,转载请注明出处!



导语

Qt中除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函数可以获取字体的信息,它返回QFontInfo类对象。在绘制文字时会默认使用抗锯齿。


环境: Windows Xp + Qt 4.8.4+QtCreator 2.6.2



目录

一、基本绘制
二、控制文字的位置
三、使用字体



正文


一、基本绘制

我们接着在上一节的项目上进行讲解,首先将paintEvent()函数更改如下:
void   MainWindow ::paintEvent( QPaintEvent   *)
{
     QPainter   painter( this );
     painter.drawText( 100 ,   100 ,   "qter.org_yafeilinux" );
}

这样就在(100, 100) 的位置绘制了一个字符串。效果如下图所示。

13-1.jpg



二、控制文字的位置


1.      我们先到QPainter的帮助文档页面,然后查看drawText()函数的重载形式,找到:
QPainter::drawText ( const QRectF &rectangle, int flags, const QString & text, QRectF * boundingRect = 0 ) ,如下图所示。

13-2.jpg

        它的第一个参数指定了绘制文字所在的矩形;第二个参数指定了文字在矩形中的对齐方式,它由Qt::AlignmentFlag 枚举变量进行定义,不同对齐方式也可以使用“| ”操作符同时使用,这里还可以使用Qt::TextFlag 定义的其他一些标志,比如自动换行等;第三个参数就是所要绘制的文字,这里可以使用“\n ”来实现换行;第四个参数一般不用设置。


2. 下面我们来看一个例子。为了更明显的看到文字在指定矩形中的位置,我们绘制出这个矩形。将paintEvent() 函数更改如下:

void   MainWindow ::paintEvent( QPaintEvent   *)
{
     QPainter   painter( this );
     // 设置一个矩形
     QRectF   rect( 20 ,   20 ,   300 ,   200 );
     // 为了更直观地看到字体的位置,我们绘制出这个矩形
     painter.drawRect(rect);
     painter.setPen( QColor ( Qt :: red ));
     // 我们这里先让字体水平居中
     painter.drawText(rect,   Qt :: AlignHCenter ,   "yafeilinux" );
}

        现在运行程序,效果如下图所示。

13-3.jpg


        可用的对齐方式如下图所示。
13-4.jpg



三、使用字体

为了绘制漂亮的文字,可以使用QFont类来设置文字字体。大家也可以先在帮助文档中查看该类的介绍。下面将最常用的一些设置进行演示。
        paintEvent() 函数中继续添加如下代码:

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::green);
painter.drawText(120, 80, tr("yafeilinux"));
painter.translate(50, 50);
painter.rotate(90);
painter.drawText(0, 0, tr("helloqt"));

     这里创建了QFont 字体对象,使用的构造函数为QFont::QFont ( const QString & family,int pointSize = -1, int weight = -1, bool italic = false ) ,第一个参数设置字体的family 属性,这里使用的字体族为宋体,可以使用QFontDatabase 类来获取所支持的所有字体;第二个参数是点大小,默认大小为12 ;第三个参数为weight 属性,这里使用了粗体;最后一个属性设置是否使用斜体。然后我们又使用了其他几个函数来设置字体的格式,最后调用setFont() 函数来使用该字体,并使用drawText() 函数的另一种重载形式在点(120, 80 )绘制了文字。后面又将坐标系统平移并旋转,然后再次绘制了文字。 运行程序,效果如下图所示。

13-5.jpg



结语

       这一节最后的例子中使用了rotate()函数来旋转坐标系统,从而绘制出了纵向的文字。这个将会在后面的篇章中介绍到。




涉及到的源码下载:  painter_1.zip (2.34 KB, 下载次数: 6) 
相关文章
|
4月前
|
数据可视化 图形学 C++
C++ Qt开发:Charts绘图组件概述
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍`QCharts`二维绘图组件的常用方法及灵活运用。Qt Charts 提供了一个强大且易于使用的工具集,用于在 Qt 应用程序中创建各种类型的图表和图形可视化,该模块提供了多种类型的图表,包括折线图、散点图、条形图、饼图等。这使得开发人员能够轻松地将数据以直观的方式呈现给用户,增强应用程序的可视化效果。
48 0
C++ Qt开发:Charts绘图组件概述
|
4月前
|
存储 缓存 自然语言处理
QT基础教程(QMap和QHash)
QT基础教程(QMap和QHash)
186 0
|
25天前
|
Linux API iOS开发
【Qt 渲染引擎】一文带你了解qt的三种 渲染引擎,包括栅格引擎(Raster)、OpenGL 和本地绘图系统
【Qt 渲染引擎】一文带你了解qt的三种 渲染引擎,包括栅格引擎(Raster)、OpenGL 和本地绘图系统
22 0
|
30天前
|
数据可视化 算法 C++
C++ cmake工程引入qt6和Quick 教程
C++ cmake工程引入qt6和Quick 教程
32 0
|
30天前
|
缓存 Linux 定位技术
Qt绘图指南:掌握高效、美观的GUI设计之道
Qt绘图指南:掌握高效、美观的GUI设计之道
88 1
|
3月前
Qt6学习笔记十三(绘图)
Qt6学习笔记十三(绘图)
37 0
|
4月前
|
数据可视化 计算机视觉
QT基础教程(图形处理)
QT基础教程(图形处理)
33 0
|
4月前
QT基础教程(文本绘制)
QT基础教程(文本绘制)
41 0
|
4月前
|
存储 数据处理 数据格式
QT基础教程(文件操作深入)
QT基础教程(文件操作深入)
45 0
|
4月前
|
编解码 区块链 Windows
QT基础教程(QPalette和QIcon)
QT基础教程(QPalette和QIcon)
50 0

推荐镜像

更多