Qt示例 | 仿射变换示例 Affine Transformations(九)

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情

注:示例为Qt 5.1.1中的示例。
本文旨在剖析Qt示例的源码,总结函数使用方法以及编程思想,提高自己的编程能力。

示例运行效果:

1.gif

文件目录:

image.png image.png

具体实现:

ArthurFrame类:

image.png

resizeEvent函数:

image.png

主要实现了当使用opengl时,重新设置opengl窗口的大小。

setDescriptionEnabled函数:

image.png

这个函数主要用来设置是否显示What's this的描述标志。然后发射一个信号,并刷新窗口。

loadDescription函数:

image.png

这个函数主要用来加载show source显示的源码文件。源码文件是一个html文件,通过QFile操作文件,先打开在读取。最后调用setDescription()函数来新建一个文本类,并将内容设置进去。

setDescription函数:

image.png

新建一个文本类,并将文本内容设置进去。

QTextDocument: 是结构化富文本文档的容器,为样式文本和各种类型的文档元素(如列表、表、框架和图像)提供支持。它们可以被创建用于QTextEdit,或独立使用。

paintDescription函数:

image.png

这个函数是在paintevent()函数中进行调用的,主要用来绘制what's this的描述内容,实现了重新计算文本框的大小、文本区域的大小。在改变主窗体宽高时,会同时改变描述框的宽高。绘制文本框和阴影部分。

qMax: 用来获取两个值中的最大值。
setClipRegion: 使用指定的剪辑操作将剪辑区域设置为给定区域。默认的剪辑操作是替换当前剪辑区域。
translate: 将坐标系(即坐标原点位置)平移到给定的偏移量;例如,给定的偏移量被添加到点上。
QAbstractTextDocumentLayout::PaintContext: 是一个规定绘制文档布局时使用的参数的类。draw()函数为QTextDocuments自定义布局。它由光标位置、默认文本颜色、剪辑矩形和一组选择项指定。

loadSourceFile函数:

image.png

用来传入将要显示的源码文件路径。

showSource函数: image.png

showSource函数是按钮“Show Source”的点击响应函数,主要实现了将文件中的特殊字符进行替换,并将文件显示出来。

findChild: 返回此对象的子对象,该子对象可以强制转换为类型T,称为name,如果没有这样的对象,则返回0。
QRegExp: QRegExp类使用正则表达式提供模式匹配。正则表达式是一种用于匹配文本中的子字符串的模式。这在很多情况下都是有用的,例如:

  • regexp可以测试子字符串是否满足某些条件,例如是整数或不包含空格;
  • regexp提供了比简单子字符串匹配更强大的模式匹配,例如,匹配单词mail、letter或correspondence中的一个,但不匹配单词email、mailman、mailer、letterbox等。
  • regexp可以用不同的子字符串替换所有出现的子字符串。例如,将所有&的出现替换为&amp,&后面都会跟着一个amp;
  • regexp可用于标识应该在哪里拆分字符串,例如拆分制表符分隔的字符串。

未完待续...

猜你喜欢

转载自juejin.im/post/7109643616800702494