【问题标题】:Custom dock area using Qt 4.4使用 Qt 4.4 的自定义停靠区
【发布时间】:2009-08-14 08:36:47
【问题描述】:

是否可以使用 Qt 4.4 创建自定义停靠区。我知道这在 Qt 3 中是可能的,正如document 所建议的那样。文档摘录“...如果您需要创建自己的停靠区域,我们建议您创建 QWidget 的子类并将 Q3DockAreas 添加到您的子类中...”。但是,在我看来,在 Qt 4 中 Q3DockArea 已被删除,现在 QMainWindow 本身具有停靠区域。我基本上想拥有自己的停靠区小部件,我可以将小部件停靠到其中。此停靠区小部件可以位于应用程序中的任何位置。关于如何做到这一点的任何想法?

【问题讨论】:

    标签: qt dockable


    【解决方案1】:

    一开始,Q3DockArea 并没有在 Qt4 中被移除,实际上它已经被添加了。被删除的类是 QDockArea。 如果你有旧代码,你仍然可以使用这个 Q3* 类,这就是它们的用途。

    但我不建议使用兼容性类。使用像 QWidget 这样的 QMainWindow 怎么样。使用父 Widget 创建它,但没有菜单、工具栏、状态栏,并使用 setWindowFlags() 等撤销其顶级状态。

    您可以将其用作旧式 QDockArea,将其放置在您喜欢的位置并添加您的 QDockWidgets。

    另外,当前的 Qt 版本是 4.5.2,不需要使用过时的版本 ;-)

    【讨论】:

    • 我看到将 QMainWindow 创建为停靠区域的问题是,您只能停靠在 QMainWindow 的左侧、右侧、顶部和底部。因此,当您在该区域中放置某些东西时,它不会填满整个小部件,而只会将自己放置在可停靠区域上。它看起来不太好。 ;)
    • 不是这样,至少如果这个 QMainWindow 中没有 centralWidget,如果允许的话,一个单独的停靠区将覆盖整个区域。停靠区的大小没有固有的限制。但是,如果您觉得它们的行为更像您想要的,请使用 Q3Dock* 类。或者编写自己的 QDockArea 类,使用 QMainWindow 的停靠部分作为模板。
    猜你喜欢
    • 1970-01-01
    • 2013-10-05
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2014-05-06
    • 1970-01-01
    • 2014-07-05
    相关资源
    最近更新 更多