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

时间:2016-11-18 12:33:09

标签: qt qevent qmdiarea

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

QResizeEvent似乎为时已晚,即窗口已经调整大小,已经计算了布局,并且通常已经安排完整重新绘制窗口小部件。

resizeEventeventFilter都让我了解刚刚发生的调整大小并撤消'如果改变是不合需要的,这对我来说是一个巨大的性能问题(嵌入式设备,慢速图形)。

我目前正在捕捉QMouseEvent并修改报告的光标位置,但这很麻烦,并没有捕捉窗口几何体发生变化的所有情况。

1 个答案:

答案 0 :(得分:0)

如果您通过拖动窗口边框来调整大小,则应该捕获QEvent::NonClientAreaMouseButtonPress之类的事件,请在此处查看更多内容 - QEvent::Type

您可以安装观察程序以检查更改的窗口大小并具有关于NonClientDrag的标志(例如)。
但问题是当用户按下“最大化”按钮或只是win+↑(在WinOS中)时该怎么办,另一方面这种变化几乎是立竿见影的,所以你不应该担心它们。