QSpacerItem
QSpacerItem就是Qt设计模式中的分隔条,有人可能说一个分隔条有什么可研究的,我之前也是这么想,没想到今天发现里面玄机还真是不少。
首先看最神奇的一个现象:不添加到布局的分隔条无法在设计模式中保存。
在窗口上拖两个分隔条,一横一竖。
然后保存
重新打开后,发现两个分隔条竟然不见了!既然保存后分隔条不见了,那么每次编译也就不会在ui_.h里产生QSpacerItem了,因为编译之前会保存。
最好不要给分隔条改名,也就是spacerName,虽然修改后在代码里仍可使用,但是不知为什么QSpacerItem类没有这个成员函数,所以不能在代码里改名只能在设计模式里改,不过一般也不会在C++里操作它。
QSpacerItem的基类QLayoutItem是个抽象类,有几个纯虚函数,提供的是QLayout能操作的抽象对象(abstract item)。我是这样理解抽象对象的:注意QLayoutItem没有基类,所以没有继承QWidget,而QWidget的所有子类都覆盖了函数paintEvent,实现了控件的形状,而QSpacerItem没有这样的绘图函数,因为它用于在布局中提供一个空白的空间
现在有一个分隔条Spacer_2,开始大小为QSize(40,20),添加到一个布局里然后拉伸布局,会发现其sizeHint始终是QSize(40,20),没有随布局的改变而改变,代码输出也是一样的结果。QW

本文探讨了Qt中的QSpacerItem及其在布局中的作用。QSpacerItem作为分隔条,虽然看似简单,但在布局保存和尺寸变化上存在一些特殊行为。在布局管理中,通过设置拉伸比例可以实现更灵活的控件分布。同时,讨论了控件的最小和最大尺寸对布局拉伸的影响,揭示了布局中可能出现的空白区域现象。

2万+

被折叠的 条评论
为什么被折叠?



