gpt4 book ai didi

c++ - 如何避免在 QMainWindow 中与过多的 dockwidgets 丑陋重叠?

转载 作者:可可西里 更新时间:2023-11-01 17:46:27 32 4
gpt4 key购买 nike

在我们的应用程序中,我们有可变数量的 dockwidgets,因为其中一些是由在运行时加载的插件添加的。并非所有 dockwidgets 都需要同时可见。这在很大程度上取决于用户正在做什么以及哪些插件处于事件状态。

但是,如果使用 addDockWidget(...) 以编程方式添加了太多的 dockwidget,它们就会开始相互重叠(不是在选项卡方面,而是在绘制的内容方面)另一个区域,显然看起来破损了)。

Overlapping dockwidgets

用户可以将 dockwidgets 移动到仍然有空间的 dockareas ,但是布局/主窗口成功地阻止了(untabbed)重新添加到“拥挤的”dockarea。

我们确实允许选项卡式停靠栏允许用户安排所需的停靠栏小部件,但我们不想启用 QMainWindow::ForceTabbedDocks 因为这会过多地限制同时可见的停靠栏小部件的数量(每个码头区域一个)。

如何防止这种情况或更好地控制如何添加 dockwidgets?

最佳答案

不直接回答你的问题,但实际上忘记 Qt 并真正考虑整个交互应该如何工作可能是值得的。用户的期望是什么?如果 10 个不同的插件激活,实际会发生什么?它们应该停靠还是应该 float ,或者它们应该成为初始状态为主窗口边缘上的小按钮的可固定停靠窗口?我认为一旦你完成了基础工作并提出了用户界面模型,你就可以开始研究 Qt 并弄清楚 Qt 是否提供了开发该界面的直接方法,如果没有,你还需要开发哪些额外的组件来实现使该界面正常工作。

根据我自己的经验,很久以前我就开发了一个类似的界面,但是是在 MFC 中。我们这样做的方式是,一些停靠的窗口被认为是必须的,它们会以停靠的形式出现。然后是一组不需要始终可见但应该快速可用的窗口,它们的初始状态是隐藏的可固定停靠窗口,这意味着它们作为按钮出现在主窗口边缘。最后还有第三组,用户并不总是需要,可以从"file"->“查看”菜单调用。一旦用户使其可见,用户通常会将其分配给前两个组之一或使其保持 float 。整个配置保存在一个配置文件中,并且从那里开始,每当插件被加载/激活时,就会使用关联停靠窗口的最后使用状态。虽然它涉及相当多的额外工作,但最终结果令所有用户满意。

关于c++ - 如何避免在 QMainWindow 中与过多的 dockwidgets 丑陋重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11539714/

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