Joh*_* S. 8 c++ qt qdockwidget
在我们的应用程序中,我们有可变数量的dockwidgets,因为其中一些是由在运行时加载的插件添加的.并非所有dockwidgets都必须同时可见.这在很大程度上取决于用户正在处理什么以及哪些插件处于活动状态.
但是,如果以编程方式添加太多的dockwidgets addDockWidget(...),它们会开始相互重叠(不是在标签方面,而是根据在不同区域上绘制的一个内容,这显然看起来很糟糕).

用户可以将dockwidgets移动到仍留有空间的 dockareas ,但布局/主窗口成功阻止(未被攻击)重新添加到"拥挤"的dockarea.
我们允许标签式底座允许用户安排所需的dockwidgets,但是我们不想启用,QMainWindow::ForceTabbedDocks因为这会过多地限制同时可见的dockwidgets的数量(每个dock区域一个).
如何防止这种情况或更好地控制如何添加dockwidgets?
没有直接回答你的问题,但实际上忘记Qt并且实际上想到整个交互应该如何工作可能是值得的.用户的期望是什么?如果10个不同的插件变为活动状态,应该会发生什么?它们应该停靠还是它们应该是浮动的,还是它们应该成为具有初始状态的可钉式对接窗口,作为MainWindow边缘上的一个小按钮?我认为,一旦你做了这个基础工作并提出用户界面模型,你就可以开始查看Qt并弄清楚Qt是否提供了开发该界面的直接方法,如果不是你需要开发的其他组件让界面工作.
根据我自己的经验,我在MFC中开发了类似的界面.我们这样做的方式是,一些停靠的窗户被认为是必须的,并且它们会像停靠一样出现.然后有一组窗口不需要总是可见但应该快速可用,它们的初始状态是隐藏的可固定停靠窗口,这意味着它们在MainWindow边缘上显示为按钮.最后,用户不需要第三组,可以从File-> View Menu调用.一旦用户将其显示,用户通常会将其分配给前两组中的一组或保持其状态.整个配置保存在配置文件中,每当插件加载/变为活动状态时,就会使用相关停靠窗口的最后使用状态.它虽然涉及了相当多的额外工作,但最终结果是让所有用户满意.