在小部件移动/调整大小之前拦截它



我使用的是QMdiSubWindow,我想捕获任何试图修改窗口的大小/形状/位置的输入,并过滤/修改产生的位置和大小,以便小部件与网格对齐。

QResizeEvent似乎太晚了,即窗口已经调整了大小,布局已经计算好了,并且通常已经计划了一个完整的小部件重绘。

resizeEventeventFilter都只是让我了解刚刚发生的大小调整和"撤销"它,如果改变是不希望的,这对我来说是一个巨大的性能问题(嵌入式设备,缓慢的图形)。

我目前正在捕获QMouseEvent s并修改报告的光标位置,但这是混乱的,并不能捕获窗口几何形状变化的所有情况。

如果您通过拖动窗口边框来调整大小,那么您应该捕获像QEvent::NonClientAreaMouseButtonPress这样的事件,在这里查看更多信息QEvent:类型

例如,您可以安装监视器来检查窗口大小的变化,并设置一个关于NonClientDrag的标志。
但问题是,当用户按下"最大化"按钮或只是一个win+↑(在WinOS中),在另一方面,这个变化几乎是立即的,所以你不应该担心他们。

相关内容

  • 没有找到相关文章

最新更新