1.Qt源码中的设计模式:撤销/重做框架与备忘录模式
2.PyQt5系列教程(52):QDockWidget的使用
3.监视文件状态-Qt有绝招
Qt源码中的设计模式:撤销/重做框架与备忘录模式
Qt源码中的设计模式:撤销/重做框架与备忘录模式
备忘录模式(Memento Pattern)是一种行为型设计模式,用于保存对象当前状态并在需要时恢复该状态。此模式适用于保存和恢复对象状态的场景。
备忘录模式包含发起人(Originator)、备忘录(Memento)和负责人(Caretaker)三个参与者。发起人负责创建备忘录和恢复状态,apacheorc源码解析备忘录存储发起人的状态信息,而负责人管理多个备忘录。
以下为C++参考示例:Originator类表示需要保存状态的对象,Memento类用于存储Originator的状态,Caretaker负责管理多个备忘录。通过操作Originator实现状态修改、保存和恢复。
备忘录模式与撤销/重做框架结合使用时,主要关注于保存状态和恢复状态。例如,假设用户通过更改QTextEdit的字体和颜色来实现撤销和重做功能。结合备忘录模式,Memento类记录QTextEdit的状态,简化了操作。
在此示例中,微擎多用户微信源码MyCommand类执行命令,同时兼任备忘录模式的Originator类和命令模式的Receiver类,QUndoStack类则担任备忘录模式的Caretaker类和命令模式的Invoker类。因此,备忘录模式和命令模式结合,使得撤销和重做功能实现更为简洁。
总结:通过结合使用命令模式和备忘录模式,Qt提供的撤销/重做框架实现了一个设计良好的撤销/重做类逻辑。掌握设计模式思想,有助于理解源码和编写面向对象程序。在Qt源码和实际开发中,设计模式的结合应用常见。
PyQt5系列教程():QDockWidget的使用
上期我们一起学习了QDockWidget类。主要涉及到以下几个知识点:
1、QQ秀的呈现
2、QStackedWidget类的使用
今天我们一起来学习下QDockWidget类,这个类能够实现在窗口中放入多个小部件,而且还能移动哦!!
总体介绍
QDockWidget类提供了一个可以停靠在QMainWindow中或作为桌面上的月拐选股预警指标公式源码顶级窗口浮动的小部件。
QDockWidget提供了Dock小部件的概念,也称为工具调色板或实用程序窗口。停靠窗口是放置在QMainWindow中的中央窗口小部件周围的停靠窗口小部件区域中的次要窗口。
停靠窗口可以在其当前区域内移动(红线的地方),移动到新区域并且由最终用户确定是否浮动。 QDockWidget API允许程序员限制浮动窗口小部件移动,浮动和关闭的能力以及它们可以放置的区域。
外观
QDockWidget由一个标题栏和内容区域组成。标题栏显示浮动窗口小部件窗口标题,浮动按钮和关闭按钮。根据QDockWidget的状态,float和close按钮可能被禁用或根本不显示。
标题栏和按钮的视觉外观取决于使用的样式。
QDockWidget充当它的子部件的包含,使用setWidget()进行设置。自定义尺寸提示,最小和最大尺寸和尺寸策略应该在子部件中实现。 QDockWidget会尊重他们,调整自己的约束以包含框架和标题。大小限制不应该在QDockWidget本身上设置,传奇3手游服务端 源码因为它们根据是否停靠而改变;停靠的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自动生成的代码,我个人觉得也是可以提高的地方。
好的,今天这期就这样结束吧。如果你喜欢本篇文章,请给我点赞
赞赏(推荐)
分享给你的好友们吧!
关注微信公众号:学点编程吧,发送:pyqt可以获得本期代码。加油!(ง •̀_•́)ง (*•̀ㅂ•́)
监视文件状态-Qt有绝招
在软件开发中,经常需要对文件状态进行实时监控。常规做法是设置定时器,定期检查文件状态,但这种方法繁琐耗时,影响性能。Qt提供了一个简洁高效的解决方案:QFileSystemWatcher。
QFileSystemWatcher类,顾名思义,就是监控文件系统变化的工具。它继承自QObject,无属性,信号包含目录改变信号与文件改变信号,接收各自路径作为参数。使用addPath()方法添加需要监控的文件,通过connect()函数连接fileChanged()信号与自定义槽函数,一旦文件发生变化,即可执行对应操作。若需监控多个文件,可使用addPaths()方法批量添加。
实现步骤包括创建GUI应用项目FileWatcher,定义ui窗口类FileWatcherWidget,设计ui界面,包含QListWidget与QTextEdit,实现监视与显示功能。在程序中添加监视的文件,修改文件后,文本框自动同步显示修改内容。
利用QFileSystemWatcher,可以实现快速、高效的文件监控,尤其适用于配置文件变动时的程序或界面更新。但需注意,文件名更改或删除后,监视将自动中断。
对于更深入的学习,推荐观看《Qt 全流程实战企业级项目 - 云对象存储浏览器》视频教程,深入了解Qt应用开发。
如果您对Qt感兴趣,欢迎关注微信公众号“小豆君Qt分享”,加入C++/Qt交流群,获取更多资源与文章源码。关注我们,一起成长,共创Qt编程辉煌。