gpt4 book ai didi

c++ - Qt : Can a QMdiSubWindow be moved outside a QMdiArea and QMainWindow?

转载 作者:行者123 更新时间:2023-12-02 13:15:39 25 4
gpt4 key购买 nike

我正在编写某种编辑器,我希望允许用户在 MdiArea 内自由移动窗口,并允许他们将窗口移出 MdiArea、移出应用程序的主窗口。

我应该怎样做才能实现这个目标?

最佳答案

我设法找到了一个适用于 Qt 的简单解决方案。它并不完美,因为我没有实现拖放功能,但我想也可以使用类似于 Visual Studio 2010 窗口对接的系统来完成。

这是设置:

  1. 使您的小部件类成为窗口的内容(我们将其称为文档小部件),继承自 QDockWidget 或 QMdiSubWindow 以外的其他内容。
  2. 现在文档小部件需要拥有(创建、保留和销毁)一个 QDockWidget(将是外部窗口)和一个 QMdiSubWindow(将是内部窗口)。它们都需要隐藏。
  3. 假设您的主窗口中心有一个 QMdiArea,您必须添加特殊代码才能在 QMdiArea 中注册文档的内部窗口。
  4. 在某处(在窗口标题栏或文档小部件中)添加一个按钮,触发从内部窗口到外部窗口的切换。
  5. 如果我们按下该按钮并且文档小部件位于内部窗口中,我们将隐藏内部窗口,然后从中取消注册文档小部件。然后我们将文档窗口注册到外部窗口中并显示它。
  6. 要执行相反的操作,只需执行 5 步,切换外部和内部窗口即可。
  7. 您可能需要添加一些特殊代码来删除文档(这意味着隐藏所有窗口,然后从 QMdiArea 取消注册内部窗口)。

这样,只需按一下按钮,文档小部件就会从主窗口内部的窗口跳转到主窗口外部的窗口,没有任何问题。

<小时/>

我正在一个开源项目中实现此解决方案。一旦完成并公开,我将在此处放置链接。

编辑:我只有我的 WIP FreeWindowManager.hpp 实现(检查关联的类):https://code.google.com/archive/p/mjklaim-freewindows/source/default/source?page=2

关于c++ - Qt : Can a QMdiSubWindow be moved outside a QMdiArea and QMainWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8058765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com