Scroll Area提供了一个呈如今其余部件上的可滚动区域视图,滚动区域用于显示框架内的子部件的内容。实际上在Designer中设计部件的部署时,须要提供滚动区域的部件应该放在Scroll Area部件上。
下图是将一个标签文本放到滚动区域之上:
下图是该标签对应区域:
能够看到标签的区域在滚动区域以内。html
在学习滚动区域时,老猿才开始觉得很简单,属性才两个,结果发现本身被打脸了,测试时发现alignment属性在Designer中没有做用,滚动条的出现以及内容的完整展示都不尽如人意,期间针对部分状况(如《PyQt(Python+Qt)学习随笔:QScrollArea为何不起做用未出现滚动条?》)弄清楚告终果在某些时候又不必定正确,这种状况持续整整三天多没有进展。python
为了解决问题,一方面查找资料,一方面继续各类测试,最后受《QT的自动滚动区QScrollArea的用法,图文详解》一文的启发最终才完全弄明白。web
Designer滚动区域部件对应类QScrollArea,但与QScrollArea有所区别,在此必须介绍一下滚动区域相关的几个重要概念。
下图是一个用Designer设计的能够明确滚动区域相关概念的界面图:
上图最下面是一个主窗口,在主窗口上面部署了一个Scroll Area的组件(为红色框围住的②号区域),滚动区域内部又存在一个蓝色边框标记的①号区域,能够看到Designer中1号区域是在2号区域内,但①号区域外②号区域内的部分与①号区域的背景是不一样的,①号区域的背景是由小点组成的网格,①号区域外②号区域内的部分则是无点的。框架
基于上面介绍的滚动区域相关概念,咱们再来介绍滚动区域的属性。svg
滚动区域对应类为QScrollArea,该类是从QAbstractScrollArea派生的,除了继承父类的属性外,在Designer中,QScrollArea滚动区域能够设置的自身的属性包括alignment和widgetResizable两个,除了Designer中的这2个属性外,内容部署层对应部件以及滚动区域的布局也是一重要属性。布局
滚动区域的alignment属性对应QScrollArea的alignment属性,用于控制滚动区域的内容部署层相对展示层的对齐方式,分为水平和竖直两个方向。对齐方式对应类型为枚举类型Qt.Alignment ,相关取值及含义请参考《PyQt(Python+Qt)学习随笔:QListView的itemAlignment属性》。学习
各类对齐方式的案例请参考概念部分的截图案例。测试
能够经过alignment()和setAlignment(Qt.Alignment)方法对QScrollArea的alignment属性进行访问,对QScrollArea的alignment属性的缺省值为左上角对齐,表示内容层在展示层的左上角。.net
滚动区域的widgetResizable属性用于控制滚动区域的内容部署层是否应跟随滚动区域的大小变化进行大小跟随调整,当滚动区域框架(即展示层)大小小于内容部署层大小时,须要经过滚动窗口才能看到完整的内容部署层上的内容。设计
当滚动区域的widgetResizable 属性为False时,在Designer中或应用界面手工调整滚动区域部件的大小时,内容部署层不会跟随调整,但能够经过应用代码进行调整,具体调整方法请见下面介绍。
当滚动区域的widgetResizable 属性为True时,在Designer中或应用界面手工调整滚动区域部件的大小时,内容部署层会跟随调整。但老猿验证widgetResizable 为True时,此时经过应用代码进行调整调整滚动区域部件的大小没有任何效果。
滚动区域的widgetResizable属性缺省为False,能够经过方法widgetResizable()和setWidgetResizable(bool resizable)来访问widgetResizable属性。
内容部署部件即为滚动区域的内容部署层对应部件,能够经过方法widget()和setWidget(QWidget widget)来进行该属性的访问,方法takeWidget()能够将滚动区域对应的内容部署层对应部件移除。
滚动区域自带布局属性,经过鼠标右键点击滚动区域部件,选择下图中的layout子菜单便可设置滚动区域的布局:
滚动区域的布局结合部署在滚动区域部件的大小策略,能够有效展示子部件的内容。如:
上图中的文本标签是代码生成的超长文本串,若是滚动区域不支持布局,则哪怕扩展滚动区域大小+滚动视图也没法显示完整的标签文本。如图:
老猿关于PyQt的付费专栏《使用PyQt开发图形界面Python应用》只须要9.9元,该部分与第十五章的内容基本对应,但一样内容在付费专栏上整体来讲更详细、案例更多。本节内容对应付费专栏的《第二十四章、containers容器类部件QScrollArea滚动区域详解》。若是有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。