PDF学习宝-开发日记3-鼠标拖动窗口

鼠标拖动窗口

前言

本节就来实现一下与原始标题栏的窗口拖动功能不同的拖动窗口功能。自定义的窗口拖动功能可以识别窗口是否最大化,在窗口最大化的状态下无法拖动。并且在还原状态下无论拖动到哪个位置,再次还原窗口会回到初始位置。

鼠标拖动窗口的实现

在Qt中一般涉及鼠标功能的很多都是QMouseEvent类的鼠标事件。本节想要实现的鼠标拖拽功能就是典型的鼠标事件。利用QMouseEvent类可以知道鼠标左键还是右键按下,双击还是单击,鼠标的位置在哪等等一系列鼠标的操作。

通常用重定义鼠标事件处理函数来进行一些自定义的操作。主要使用如下几个函数:

mousePressEvent鼠标左键按下时触发的处理函数,当鼠标左键按下意味着拖拽开始,这里可以使用此函数记录下鼠标位置和窗口的位置。

mouseReleaseEvent鼠标左键松开时触发的处理函数,当鼠标左键松开就意味着拖拽停止。

mouseMoveEvent鼠标移动时触发的处理函数,鼠标在按下时移动坐标发生变化,被拖动的窗口坐标也跟着一起发生变化就会产生拖动的效果。

在widget.h头文件中添加:

在widget.cpp源文件中实现相应函数:

在函数实现过程中,我增加了窗口最大化标志位判断。如果winFlag == false也就是窗口未最大化,则鼠标拖动功能可以使用,否则将无法使用。这样做因为窗口最大化以后再进行拖动会很影响PDF阅读体验。

窗口位置还原

另外一个功能点是还原后的窗口总是回到初始位置。我的做法是先将窗口原始位置进行记录,每次点击还原按钮就将窗口移动到初始位置,以此来实现窗口的位置还原。

在widget.h中添加:

在构造函数中添加:

改造最大化/还原按钮响应函数:

来源:王者荣耀游戏总攻略

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月27日
下一篇 2022年9月27日

相关推荐