Qt-即使QMainWindow太小,也允许停靠

Qt - allow docking even if QMainWindow too small

本文关键字:许停靠 停靠 即使 QMainWindow 太小 Qt-      更新时间:2023-10-16

我之前的问题没有答案,所以让我重新表述一下:

是否可以让QMainWindow接受QDockWidget的对接,而不管小部件和窗口的大小?

目前,如果窗口太小,无法容纳最小尺寸的QDockWidget,则无法停靠。如果主窗口能够增长以适应小部件,那将是理想的选择。

提前感谢!

上次我对你的问题有一些想法,但我认为我的解决方案并不理想。所以,如果你还在挣扎,我会尽力回答。

实际上,获取鼠标输入事件并调整主窗口的大小并没有任何问题。问题是,当您从主窗口外部拖动QDockWidget时,后一个窗口会失去焦点,无法处理该事件。

我的想法是在QDockWidget上安装一个事件过滤器。在它的实现中,您应该跟踪QDockWidget的移动和全局光标位置(QCursor::pos())。如果光标当前在主窗口内,并且QDockWidget正在移动,则表示您已将QDockWidget拖动到主窗口上,如果其大小小于某个最小大小,则应调整其大小。