Win 7,Qt 5.3
我在申请时使用QDockWidget
。按预期工作。
现在我通过将setTitleBarWidget(new QWidget(this))
设置为默认构建的小部件来隐藏标题栏。这是Qt文档的标准方法。同样有效,标题栏也不见了。
为了将我的小部件取消停靠为窗口,我使用myDockWidget->setFloating(true)
(在我自己的插槽中)。但现在,当窗口小部件未对接时,浮动窗口不再有边框(因此无法移动)。
如果我发表评论setTitleBarWidget
,myDockWidget->setFloating(true)
也可以。所以原来的标题栏似乎包含了一些逻辑。但是,通过查看源代码,我找不到任何特别的东西。
有什么提示我可以做些什么来克服这个问题?
答案 0 :(得分:2)
这是预期的行为。请参阅QDockWidget::setTitleBarWidget
文档:
如果设置了标题栏小部件,QDockWidget在浮动时将不会使用本机窗口装饰。
此行为的目的是允许为停靠窗口小部件实现完全自定义的标题栏。
解决方法是连接到窗口小部件浮动或停靠时发出的QDockWidget::topLevelChanged
信号,并将标题栏窗口小部件设置为0,只要它浮动以恢复默认行为即可。
请注意,当设置默认标题栏小部件时,不会删除之前的标题栏小部件,因此您应该删除以前使用的QWidget或保存指向它的指针并在下次使用它。