我使用QMdiSubWindow
,我希望捕获任何试图修改窗口大小/形状/位置的输入,并过滤/修改生成的位置和大小,以便小部件对齐到网格。
QResizeEvent
似乎为时已晚,即窗口已经调整大小,已经计算了布局,并且通常已经安排完整重新绘制窗口小部件。
resizeEvent
和eventFilter
都让我了解刚刚发生的调整大小并撤消'如果改变是不合需要的,这对我来说是一个巨大的性能问题(嵌入式设备,慢速图形)。
我目前正在捕捉QMouseEvent
并修改报告的光标位置,但这很麻烦,并没有捕捉窗口几何体发生变化的所有情况。
答案 0 :(得分:0)
如果您通过拖动窗口边框来调整大小,则应该捕获QEvent::NonClientAreaMouseButtonPress
之类的事件,请在此处查看更多内容 -
QEvent::Type
您可以安装观察程序以检查更改的窗口大小并具有关于NonClientDrag的标志(例如)。
但问题是当用户按下“最大化”按钮或只是win+↑
(在WinOS中)时该怎么办,另一方面这种变化几乎是立竿见影的,所以你不应该担心它们。