Win 7,Qt 5.3
我在应用程序中使用QDockWidget。按原计划工作。
现在,我通过将setTitleBarWidget(new QWidget(this))设置为默认构造的小部件来隐藏标题栏。根据Qt文档,这是标准的方法。同样有效,标题栏不见了。
为了将我的小部件解锁为窗口,我使用myDockWidget->setFloating(true) (在我自己的插槽中)。但是现在,当小部件被取消停靠时,浮动窗口不再有边框(因此不能移动)。
如果我注释掉setTitleBarWidget,myDockWidget->setFloating(true)也能工作。原来的标题栏似乎包含了一些逻辑。但是,通过查看源代码,我找不到任何特别的东西。
我能做些什么来克服这个问题吗?
发布于 2014-07-15 10:27:49
这是预期的行为。请参阅QDockWidget::setTitleBarWidget文档:
如果设置了标题栏小部件,则QDockWidget在浮动时不会使用本机窗口装饰。
此行为的目的是允许为dock小部件实现完全定制的标题栏。
解决方法是连接到在小部件浮动或停靠时发出的QDockWidget::topLevelChanged信号,并将标题栏小部件设置为0,只要它是浮动的,以恢复默认行为。
请注意,在设置默认标题栏小部件时不会删除以前的标题栏小部件,因此您应该删除以前使用过的QWidget,或者保存指向它的指针并在下次使用它。
https://stackoverflow.com/questions/24745685
复制相似问题