如何将最大化按钮添加到浮动 QDockWidget?

Posted

技术标签:

【中文标题】如何将最大化按钮添加到浮动 QDockWidget?【英文标题】:How to add a maximize button to a floating QDockWidget? 【发布时间】:2017-08-29 08:48:01 【问题描述】:

如何向浮动的 QDockWidget 添加最大化按钮?

我读到了一种创建自定义标题栏的方法,但我更喜欢使用标准按钮而不是我必须自己添加的图标。

最好的解决方案是如果标题栏样式在浮动时不会改变。

【问题讨论】:

我刚刚尝试了一个生成浮动 QDockWidget 并保留按钮的代码,您可以显示 Minimal, Complete, and Verifiable example 以便能够测试您的代码。 在我的情况下并不容易,因为停靠小部件是继承和模板化的,但我会在接下来的几天内尝试获得一个工作示例。不过希望有一个好的猜测。 我建议您每次提出问题时都提供一个 mvce,根据我的经验,这种类型的问题比没有它的人更有可能得到回答,因为它有助于我们了解您的问题. 【参考方案1】:

最初,浮动窗口将具有以下标志:QFlags<:windowtype>(Tool|X11BypassWindowManagerHint|WindowTitleHint|WindowSystemMenuHint|CustomizeWindowHint|WindowCloseButtonHint)

您将需要设置 Qt::CustomizeWindowH 并将标志 Qt:WindowMaximizeButtonHint(或 WindowMinMaxButtonsHint)和 Qt:FramelessWindowHint(取决于您使用的系统 visu - 还需要X11 标志设置)QFlags<:windowtype>(Tool|X11BypassWindowManagerHint|FramelessWindowHint)

设置标志需要使用方法 setWindowFlags:https://doc.qt.io/qt-5/qwidget.html#windowFlags-prop

另外还有一个方法:setWindowFlag(flag,bool):https://doc.qt.io/qt-5/qwidget.html#setWindowFlag

【讨论】:

我无法让它工作。我的代码是:dockWidget->setWindowFlags(Qt::Tool | Qt::WindowMinMaxButtonsHint | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint | Qt::FramelessWindowHint);但我也尝试了其他组合,遗憾的是没有变化。 对不起,你是对的,最大化和最小化按钮不能添加到 Qt::Tool 和 Qt::FramelessWindowHint。当它在外面时,您需要将其设为 Window(topLevelChange 信号),但是这一次,您会将 dockWidget 呈现为一个窗口,而不是作为具有无框装饰的普通 Docking。

以上是关于如何将最大化按钮添加到浮动 QDockWidget?的主要内容,如果未能解决你的问题,请参考以下文章

将浮动操作按钮添加到选项卡栏控制器内的视图控制器

Flutter:向图像添加浮动操作按钮

如何将最大化和最小化按钮添加到 jQuery 基本对话框

如何将关闭按钮添加到 UIModalPresentationPageSheet 中显示的模态视图角?

如何按住浮动按钮并将其移动到 android 屏幕上的任何位置?

如何允许浮动 Qt5 停靠小部件的交互式调整大小