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

124 阅读2分钟

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

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

示例运行效果:

1.gif

文件目录:

image.png image.png

具体实现:

XFormWidget类:

image.png

XFormWidge是本示例的主窗口类,类中只有一个构造函数,用来创建所有的部件和布局。

image.png

  • 设置了窗口的标题。
  • 创建了一个XFormView对象,这个对象的功能后面会写,设置了它的最小大小为(200,200)。
  • 创建了窗口中的分组控件(GroupBox),以及四个分组中的小部件。

setSizePolicy: 设置控件在布局管理器中水平方向和垂直方向大小拉伸的策略,第一个参数为水平方向的策略,第二个参数为垂直方向的策略。
QSizePolicy::Preferred: 当布局中发生伸缩变化时,允许部件放大或者缩小,sizehint()是最佳效果。
QSizePolicy::Fixed: 组件大小只与sizehint()有关,固定大小,不会因为布局伸缩而发生改变。

image.png

接着,创建了窗体右侧下方的四个按钮,“Animate”是可以选中或者取消选中的,所以调用了setCheckable()函数来启用这个属性。

image.png

接下来是创建布局,将部件放入布局中。

addSpacing: 在layout的控件之间插入间距,其插入的间距是在setSpacing(int)的基础上的,即是layout的控件间的间距为addSpacing值+setSpacing值。
setSpacing: 是设置layout中各部件的相邻距离,如果不设置,这个距离默认是10。
addStretch: 在layout的控件之间插入n个控件的间距。

image.png

最后实现了信号的连接,当我们拖拽滑块和点击按钮时,需要处理对应的操作。这里的信号槽连接,是将本地控件的信号,连接到了成员view的槽函数中。还设置了view的资源路径,初始化view、textEdit、animateButton等控件。

我们自己在实现构造函数的时候,也应该完成这些部分:

  1. 子部件的创建和布局。
  2. 信号槽连接。
  3. 初始化。

未完待续...