PyQt5系列教程(52):QDockWidget的使用
发布网友
发布时间:2024-08-19 03:34
我来回答
共1个回答
热心网友
时间:2024-08-28 20:10
上期我们一起学习了QDockWidget类。主要涉及到以下几个知识点:
1、QQ秀的呈现
2、QStackedWidget类的使用
今天我们一起来学习下QDockWidget类,这个类能够实现在窗口中放入多个小部件,而且还能移动哦!!
总体介绍
QDockWidget类提供了一个可以停靠在QMainWindow中或作为桌面上的顶级窗口浮动的小部件。
QDockWidget提供了Dock小部件的概念,也称为工具调色板或实用程序窗口。停靠窗口是放置在QMainWindow中的中央窗口小部件周围的停靠窗口小部件区域中的次要窗口。
停靠窗口可以在其当前区域内移动(红线的地方),移动到新区域并且由最终用户确定是否浮动。 QDockWidget API允许程序员限制浮动窗口小部件移动,浮动和关闭的能力以及它们可以放置的区域。
外观
QDockWidget由一个标题栏和内容区域组成。标题栏显示浮动窗口小部件窗口标题,浮动按钮和关闭按钮。根据QDockWidget的状态,float和close按钮可能被禁用或根本不显示。
标题栏和按钮的视觉外观取决于使用的样式。
QDockWidget充当它的子部件的包含,使用setWidget()进行设置。自定义尺寸提示,最小和最大尺寸和尺寸策略应该在子部件中实现。 QDockWidget会尊重他们,调整自己的约束以包含框架和标题。大小限制不应该在QDockWidget本身上设置,因为它们根据是否停靠而改变;停靠的QDockWidget没有框架和更小的标题栏。
下图画圈的地方就是典型的QDockWidget例子,是可以浮动、移动甚至关闭的。
类归属
PyQt5->QtWidgets->QDockWidget
继承关系
PyQt5->QObject and QPaintDevice->QWidget->QDockWidget
更多详细的介绍,请参见官网:
小例子
这是一个简单的小例子,在火影动漫中宇智波佐助得到六道仙人的力量馈赠,左眼开启勾玉轮回眼。勾玉轮回眼与轮回写轮眼类似,同时拥有轮回眼和写轮眼的力量。拥有独有忍术天手力和更强的六道之术,并继承了原本写轮眼和万花筒写轮眼的能力,能够使用连六道仙人都惊叹的幻术。经锻炼后能开启空间传送门,其发动的完成体须佐能乎可以抵挡无限月读的光芒,也能和拥有所有尾兽之力的人一起解除无限月读和神·树界降诞(来源:百科百科)。
在下面的例子中没有这么夸张,为了演示方便,没有用复杂的小部件,只是用了QLabel加载图片而已,旨在演示QDockWidget的作用,图片来源于互联网,不喜勿喷。
在上面这个例子中,我们大部分都是通过Qt设计师来实现的,具有以下几个功能:
1、QDockWidget是可以拖动的、悬浮的、甚至是关闭的。
2、写轮眼做了设置,不可以关闭。
3、轮回眼做了设置,即使关了,双击佐助上的轮回眼也能够显示。
4、写轮眼、轮回眼是可以叠加的,变成了QTabWidget,貌似很厉害啊!
如果你对写轮眼、轮回眼、佐助不知道的话,没有关系。写轮眼、轮回眼理解成两个QDockWidget小部件,佐助里面成QMainWindow中的一副图片就行了。
代码解析
使用Qt设计师可以很方便的帮助我们实现上面的功能,拖拽就行了。这里我把用简单的代码讲解一下如何使用QDockWidget。
效果如下:
使用QDockWidget首先要新建一个QDockWidget对象。
新建一个按钮放在QDockWidget对象上。
新建一个QTextEdit小部件设置为主窗口的中央小部件。
将给定的dockwidget添加到指定的区域,这里是中间,对象是self.dock。
说明一下,除了Qt.RightDockWidgetArea,还有其它的,如:
其余的代码就不做说明,因为较为简单。
这个就是一个最简单的例子了。
我们之前所演示的火影忍者那个例子,和这个基本差不多。只是还有几点需要说明一下:
1、写轮眼是无法关闭的。
这个需要单独设置,如下:
通过这个设置它只具有移动的功能了。当然除了DockWidgetMovable还有其它的功能,如下:
2、有的时候我们需要QDockWidget就是浮动的,而不是我们把它拉出来,可以这样设置:
效果如下:
3、轮回眼即使关闭也能够通过点击佐助的显示出来。
给self.label_zhuozhu2安装事件过滤器,然后重写eventFilter这个函数就行了。相关的知识点,请参见:
最后
本次的知识点较为简单,详细的内容可以下载源码自己看看。建议可以抽空研究下eric6自动生成的代码,我个人觉得也是可以提高的地方。
好的,今天这期就这样结束吧。如果你喜欢本篇文章,请给我点赞
赞赏(推荐)
分享给你的好友们吧!
关注微信公众号:学点编程吧,发送:pyqt552可以获得本期代码。加油!(ง •̀_•́)ง (*•̀ㅂ•́)