Qt - 如何粘合两个窗户并将它们一起移动?

时间:2018-06-18 11:24:16

标签: c++ qt

与qmmp(Qt)音乐播放器ui设计一样,这两个或三个窗口实际上位于同一窗口中,因为只有一个停靠图标,这些窗口可以一起移动并相互连接。

我阅读了源代码,似乎使用了QDockWidget。但我真的不知道如何获得它的细节。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

当您手动移动辅助窗口(在本例中为播放列表)时,您可以检查手动移动的结束位置,如果它位于主窗口的边缘,则只需将其位置绑定到位置即可将其粘贴。主窗口的尺寸。

由于窗口位置和尺寸是属性,因此它们具有通知信号,因此您可以将这些信号连接到自动移动粘合窗口的功能。

最后,当您尝试手动移动辅助窗口时,可以通过断开连接来解除粘合。

通过计算和存储定位偏移并将其应用于每个主窗口移动,您可以轻松支持偏移胶合,而不是纯水平或垂直胶合。

如果在主窗口的给定阈值内发生掉落,则可以捕捉到边缘。如果您将鼠标相对于拖动窗口的位置考虑在内,您甚至可以将特定边缘对齐。