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

Posted

技术标签:

【中文标题】Qt - 即使 QMainWindow 太小也允许停靠【英文标题】:Qt - allow docking even if QMainWindow too small 【发布时间】:2012-07-17 09:05:51 【问题描述】:

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

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

目前,如果窗口太小而无法容纳QDockWidget 的最小尺寸,它不会停靠。如果主窗口可以增长以适应小部件,那将是理想的。

提前致谢!

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

有人会认为 Qt 应该具备开箱即用的功能。毕竟,这似乎是一个合乎逻辑的特征。特别是当您以编程方式将小部件添加到窗口时(如addDockWidget(Qt::LeftDockWidgetArea, widget)),窗口会调整大小。不过,你的回答给了我一个方向。再次感谢。

以上是关于Qt - 即使 QMainWindow 太小也允许停靠的主要内容,如果未能解决你的问题,请参考以下文章

QT:在其他窗口中显示QMainWindow

Qt - 从 QMainWindow 向 GLWidget 发送按键事件

13.QT-QMainWindow组件使用

QT学习之QMainWindow详解

Qt:为啥在 QMainWindow 中添加状态栏会影响大小调整?

QT开发(二十二)——QMainWindow主窗口