-
最新版本 (2周前):v4.4.1 -
License: LGPL 2.1 -
Starred:2.3k -
OS:Windows/Linux/macOS
任意停靠 – 无需 CenterWidget
停靠在浮动窗口内
快速切换预设的视图布局
分割器大小实际调整和占位调整
OpaqueSplitterResize 用于配置分隔符的大小调整行为。如果设置了此标志,则在交互移动分隔符时,窗口 Widget 会动态地调整大小。动态调整效果如下:下拉菜单可轻松处理多个选项卡
分离 DockWidget
您可以通过以下方式分离 DockWidget 以及 DockArea:
-
通过拖动 DockWidget 选项卡或 DockArea 标题栏 -
双击选项卡或标题栏 -
通过使用选项卡和标题栏下拉菜单中的分离菜单项
支持删除动态创建的 DockWidget
DockWidgetDeleteOnClose 标记,那么当您关闭该 Dock 控件时,它将被立即删除。自动隐藏功能
-
支持主窗口和所有浮动停靠容器 -
支持通过鼠标点击或鼠标悬停显示和隐藏 -
支持动态/延迟分隔调整大小标志 -
Dock 固定
-
配置固定按钮是否应固定当前停靠窗口 Widget 选项卡或整个停靠区域 -
单击固定按钮并按住 Ctrl 键即可固定整个停靠区域 -
支持 CSS 样式化 -
向后兼容的状态文件格式 – 可以加载旧版 Dock 管理器状态文件,而旧版本可以加载带有自动隐藏状态信息的新状态文件
拖放自动隐藏
如果您将停靠窗口 Widget 拖到四个窗口边框之一附近,则会显示特殊的叠加层,指示自动隐藏窗口 Widget 的放置区域:
当然,这也适用于 DockArea:
如果您将一个停靠窗口 Widget 或停靠区域拖到侧边栏,您甚至可以控制选项卡的插入位置。只需将鼠标拖到特定的自动隐藏选项卡上,拖动的停靠窗口 Widget 就会插入到该选项卡之前。
自动隐藏标签随意移动
您还可以将“自动隐藏”标签页拖动到新的自动隐藏位置。您可以将它们拖动到其他边框或侧边栏:
自动隐藏标签排序
您可以将“自动隐藏”选项卡拖动到当前侧边栏中的新位置以对其进行排序:

自动隐藏拖动至DockWidget
您还可以简单地将“自动隐藏”选项卡移动到另一个DockWidget ,或通过拖放将其变为浮窗:
自动隐藏上下文菜单
所有自动隐藏选项卡现在都拥有一个上下文菜单,提供您在 Dock Widget 选项卡中熟悉的所有功能。使用上下文菜单中的 “固定到… ”项,可以轻松地将自动隐藏选项卡移动到其他自动隐藏侧边栏:
Qt 版本支持
目前 Qt5 和 Qt6 版本都完美支持,包括较新的 Qt6.9。
操作系统支持
Windows 10/11
该库是在 Windows 上开发的,并且是为 Windows 开发的。已经被商业应用大量使用,所以可靠性和稳定性是经过检验的。
macOS
也可以在 macOS 上用。实际上作者没有测试这个平台,但是有用户说用过。不过 QDS 也是很好的证明,QDS 有很多 macOS的用户。
Linux
实际上 Linux 系统比较复杂,发行版众多,并且使用了不同的窗口管理系统,导致出现各种差异,所以只能针对几个典型的系统进行测试。根据所使用的窗口管理器或合成器,库可能支持或不支持带有原生标题栏的停靠窗口 Widget 。如果不支持原生标题栏,将切换到基于 QWidget 的标题栏。经过测试的支持情况如下:
|
|
|
|
|
|
|
|
|
|
|
|
Qt Creator IDE
从 4.12 版本开始,QTC 在其 Qt Quick Designer 中使用了ADS。QTC 现在已经更新到了 17.0版本,这个已经移除了。
Qt Design Studio
The most obvious change in Qt Design Studio is the integration of dock widgets using the Qt Advanced Docking System. This allows the user to fully customize the workspace and also to undock any view into its own top level window.
CETONI Elements
CETONI Elements 软件是一款功能很全的模块化实验室自动化软件,可通过图形用户界面控制 CETONI 设备。该软件拥有强大的脚本系统,可实现流程自动化。此外,该软件还采用先进的ADS,让用户可以自由排列各种插件提供的所有视图和窗口。
Notepad next
参考文献
[1]https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System?tab=readme-ov-file