当在iTunes上进行调整时,我试图实现与miniPlayer类似的效果。也就是说,检测窗口的大小调整何时完成,然后将高度更改为某个值。下面是一个直观的例子:

问题是,QML窗口中没有信号在窗口管理器进行调整大小(即用户释放句柄)时通知我。因此,如果我没有一个信号,并应用我的高度变化,一旦改变宽度或高度在调整大小时,窗口会闪烁(双倍大小发生),只要用户没有释放手柄。
感谢您的任何意见或帮助!
发布于 2020-08-04 20:36:19
您似乎希望QML发送两种不同的信号类型,一种是标记大小调整的开始和结束,另一种是在调整大小时标记大小的变化。然后,事件序列将如下所示:
window.resizeStarted() // hypothetical new event
window.widthChanged()
window.heightChanged()
window.widthChanged()
window.heightChanged()
...
window.resizeEnded() // hypothetical new event在Qt中,这显然是不可能的,但是您应该能够使用这种方法实现它,它最初的目的是在调整大小的同时根本不重新绘制窗口:
过滤相关事件,直到鼠标按钮被释放。具体来说,当鼠标按下按钮时,“吃掉”调整大小的事件,然后在鼠标释放后合成最终的调整大小事件。您可以在附加到显示QML接口的窗口/小部件对象的事件过滤器中完成这一切。(source)
这一过程将与引文中的程序非常相似:
resizeStarted()。然后转发窗口调整大小的事件。当它在调整大小时遇到鼠标释放事件时,它会在上一个widthChanged() / heightChanged()事件之后发送widthChanged()。onResizeEnded以作出反应,在这里使应用程序窗口的高度适应某个固定值。对我来说,这似乎是一条很有前途的路,但请注意,到目前为止,我还没有在代码中尝试过。
https://stackoverflow.com/questions/56252936
复制相似问题