QDockWidget - 浮动时没有边框的窗口

时间:2014-07-14 20:46:33

标签: c++ qt qdockwidget

Win 7,Qt 5.3

我在申请时使用QDockWidget。按预期工作。

现在我通过将setTitleBarWidget(new QWidget(this))设置为默认构建的小部件来隐藏标题栏。这是Qt文档的标准方法。同样有效,标题栏也不见了。

为了将我的小部件取消停靠为窗口,我使用myDockWidget->setFloating(true)(在我自己的插槽中)。但现在,当窗口小部件未对接时,浮动窗口不再有边框(因此无法移动)。

如果我发表评论setTitleBarWidgetmyDockWidget->setFloating(true)也可以。所以原来的标题栏似乎包含了一些逻辑。但是,通过查看源代码,我找不到任何特别的东西。

有什么提示我可以做些什么来克服这个问题?

1 个答案:

答案 0 :(得分:2)

这是预期的行为。请参阅QDockWidget::setTitleBarWidget文档:

  

如果设置了标题栏小部件,QDockWidget在浮动时将不会使用本机窗口装饰。

此行为的目的是允许为停靠窗口小部件实现完全自定义的标题栏。

解决方法是连接到窗口小部件浮动或停靠时发出的QDockWidget::topLevelChanged信号,并将标题栏窗口小部件设置为0,只要它浮动以恢复默认行为即可。

请注意,当设置默认标题栏小部件时,不会删除之前的标题栏小部件,因此您应该删除以前使用的QWidget或保存指向它的指针并在下次使用它。