Qt MDI型号还是停靠窗口?

Qt MDI型号还是停靠窗口?,qt,qt4,mdi,docking,Qt,Qt4,Mdi,Docking,在我们开发的QT应用程序中,我们需要显示几个“查看器窗口”(以XY平面、YX平面、XZ平面和3D平面显示数据) 我们希望使用MDI应用程序模型,但后来客户端要求在多个桌面(使用多个监视器)中拖动和查看“查看器窗口”。 这不能使用MDI窗口模型来完成,因为我们不能将MDI窗口移到主应用程序窗口之外 唯一可能的方法是使用停靠窗口,因为它们可以从主应用程序窗口中解除停靠并移动到其他桌面,但停靠窗口主要用于工具选项板或实用程序窗口 () 根据我们的要求使用Dock window是一种好的做法吗?我不会使

在我们开发的QT应用程序中,我们需要显示几个“查看器窗口”(以XY平面、YX平面、XZ平面和3D平面显示数据)

我们希望使用MDI应用程序模型,但后来客户端要求在多个桌面(使用多个监视器)中拖动和查看“查看器窗口”。 这不能使用MDI窗口模型来完成,因为我们不能将MDI窗口移到主应用程序窗口之外

唯一可能的方法是使用停靠窗口,因为它们可以从主应用程序窗口中解除停靠并移动到其他桌面,但停靠窗口主要用于工具选项板或实用程序窗口

()


根据我们的要求使用Dock window是一种好的做法吗?

我不会使用QDock window,因为您似乎不会使用客户端区域。此外,您不希望停靠到主窗口边框,而只是将小部件添加到主窗口

我认为您可以尝试使用QGridLayout的多个QWidget。将QWidget拖动到主窗口外时,只需从布局中删除QWidget。在主窗口内拖动时,将QWidget添加到QGridLayout中的正确位置。使用此方法,您也可以将小部件的位置切换到主窗口中

我不知道它是否足够清晰,但我的想法与在QtDesigner中将新元素拖动到布局中时的做法相同。当拖动小部件时,您可以看到在释放鼠标按钮时添加小部件的位置

在我看来,这种方法可能就是你正在寻找的方法


希望这有帮助

非常感谢您的回答!我将努力实施你建议的方式。但它似乎需要一些聪明的黑客。我需要使用带有QGridLayout的SDI模型,但是我如何在没有父对象的情况下在外部显示QWidgets?如果一个小部件没有父对象,它就会变成一个独立的窗口,正如QWidget的详细描述中所解释的:你解决了问题了吗?是的,只是使用了没有父对象的QWidgets。必须管理上下文来保存窗口列表(QWidgets)并使用此上下文来同步它们。