QT中文字的绘制

摘要:
你为什么要做这个文本介绍?因为一般教科书中确实没有文字描述:1.画出最简单的文字。voidDialog::paintEvent{QPainter;QRectFff;//设置矩形画家.drawRect;//为了更直观地查看字体的位置,我们绘制矩形画家.setPen;//将画笔颜色设置为红色画家.drawText;//让字体先水平居中}效果如下。这里,我们还可以使用两个枚举变量进行逐位AND运算。例如,我们可以使用Qt::AlignBottom | Qt::AlignHCenter在矩形下方的中间显示文本。

为什么要做这次文字的介绍,因为在一般的教材中,还真没有文字的描述:

1.绘制最简单的文字。

我们更改重绘函数如下:

void Dialog::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawText(100,100,”yafeilinux”);

}

我们在(100,100)的位置显示了一行文字,效果如下。

QT中文字的绘制第1张

2.为了更好的控制字体的位置。我们使用另一个构造函数。在帮助里查看drawText,如下。

QT中文字的绘制第2张

这里我们看到了构造函数的原型和例子。其中的flags参数可以控制字体在矩形中的位置。我们更改函数内容如下。

void Dialog::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QRectF ff(100,100,300,200);

//设置一个矩形
painter.drawRect(ff);
//为了更直观地看到字体的位置,我们绘制出这个矩形
painter.setPen(QColor(Qt::red));
//设置画笔颜色为红色
painter.drawText(ff,Qt::AlignHCenter,”yafeilinux”);
//我们这里先让字体水平居中
}

效果如下。

QT中文字的绘制第3张

可以看到字符串是在最上面水平居中的。如果想让其在矩形正中间,我们可以使用Qt::AlignCenter。

这里我们也可以使用两个枚举变量进行按位与操作,例如可以使用Qt::AlignBottom|Qt::AlignHCenter实现让文字显示在矩形下面的正中间。效果如下。

QT中文字的绘制第4张

对于较长的字符串,我们也可以利用“ ”进行换行,例如”yafei linux”。效果如下。

QT中文字的绘制第5张

3.如果要使文字更美观,我们就需要使用QFont类来改变字体。先在帮助中查看一下这个类。

QT中文字的绘制第6张

可以看到它有好几个枚举变量来设置字体。下面的例子我们对主要的几个选项进行演示。

更改函数如下。

void Dialog::paintEvent(QPaintEvent *)
{
QFont font(“Arial”,20,QFont::Bold,true);
//设置字体的类型,大小,加粗,斜体
font.setUnderline(true);
//设置下划线
font.setOverline(true);
//设置上划线
font.setCapitalization(QFont::SmallCaps);
//设置大小写
font.setLetterSpacing(QFont::AbsoluteSpacing,5);
//设置间距
QPainter painter(this);
painter.setFont(font);
//添加字体
QRectF ff(100,100,300,200);
painter.drawRect(ff);
painter.setPen(QColor(Qt::red));
painter.drawText(ff,Qt::AlignCenter,”yafeilinux”);
}

效果如下。

QT中文字的绘制第7张

这里的所有字体我们可以在设计器中进行查看。如下。

QT中文字的绘制第8张

<!-- end .entry -->

免责声明:文章转载自《QT中文字的绘制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux ls命令按时间显示文件VS中关于数据库的操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

如何使用PHP生成图片

79 /** 80 * 从图片文件创建Image资源 81 * @param $file 图片文件,支持url 82 * @return bool|resource 成功返回图片image资源,失败返回false 83 */ 84 function createImageFromFile($file){ 85 if(pr...

Sublime Text3安装教程,配置教程,常用插件安装等方法

前言: sublimeText3的特点: 1、Sublime Text 是一款跨平台代码编辑器,在Linux、OS X和Windows下均可使用。 2、Sublime Text 是可扩展的,并包含大量实用插件,我们可以通过安装自己领域的插件来成倍提高工作效率。 3、Sublime Text 分别是命令行环境和图形界面环境下的最佳选择,同时使用两者会大大提...

HTML标签CSS默认值研究

   最近写css的时候,发现在div元素里面添加ul元素后发现,ul列表在div里面距离最上方总是有一段空行,当时很奇怪,以为是哪个css出了问题,就把css去掉了,发现问题依旧,然后就查了一下发现html标签在不同浏览器里面是有默认的css样式的,要去掉默认样式,在样式表里添加 *{margin:0;padding:0;}即可,同时找到一个很有用的文档...

asp.net2.0导出pdf文件完美解决方案[转载]

PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式。这种文件格式与操作系统平台无关,也就是说,PDF文件不管是在Windows,Unix还是在苹果公司的Mac OS操作系统中都是通用的。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来越多的电子图书、产品说...

利用ItextSharp产PDF完整操作

记得上回有写到用C#操作Excel(.net 4.0) 很多朋友说推荐用NPOI,的确,用微软自带的操作execl会有很大的问题。客户的主机不愿意安装excel, 这时我才意识到用自带组件完全是不行的,我本来准备改用NPOI组件,但是这时客户提出为了安全(数据安全),改用后台产PDF。 这就有了本文中ITextSharp的用法 本文介绍了基本全套的用法,包...

Freemarker常用技巧(二)

1 list、break指令<#list sequence as item>  ...</#list>tem_index:当前变量的索引值.item_has_next:是否存在下一个对象.<#list ["星期一","星期二","星期三","星期四","星期五","星期六"] as x>${x_index + 1}.${...