# Advanced Docking System for Qt
[![Build status](https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/workflows/linux-builds/badge.svg)](https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/actions?query=workflow%3Alinux-builds)
[![Build status](https://ci.appveyor.com/api/projects/status/qcfb3cy932jw9mpy/branch/master?svg=true)](https://ci.appveyor.com/project/githubuser0xFFFF/qt-advanced-docking-system/branch/master)
[![License: LGPL v2.1](https://img.shields.io/badge/License-LGPL%20v2.1-blue.svg)](gnu-lgpl-v2.1.md)
[What's new](https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/releases/latest) •
[Documentation](doc/user-guide.md)
Qt Advanced Docking System lets you create customizable layouts using a full
featured window docking system similar to what is found in many popular
integrated development environments (IDEs) such as Visual Studio.
[![Video Advanced Docking](doc/advanced-docking_video.png)](https://www.youtube.com/watch?v=7pdNfafg3Qc)
## New and Noteworthy
The [release 3.8](https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/releases/tag/3.8.0)
adds the following features:
- option to close tabs with the middle mouse button
- `DeleteContentOnClose` flag for dynamic deletion and creation of dock widget
content
The [release 3.7](https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/releases/tag/3.7.0)
adds the following features:
- support for **Qt6.**
- support for [empty dock area](doc/user-guide.md#empty-dock-area)
The [release 3.6](https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/releases/tag/3.6.0)
adds some nice new features:
- support for [central widget](doc/user-guide.md#central-widget) concept
![Central Widget](doc/central_widget.gif)
- support for [native floating widgets](doc/user-guide.md#floatingcontainerforcenativetitlebar-linux-only) on Linux
![FloatingContainerForceNativeTitleBar true](doc/cfg_flag_FloatingContainerForceNativeTitleBar_true.png)
Both features are contributions from ADS users. Read the [documentation](doc/user-guide.md)
to learn more about both new features.
The [release 3.5](https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/releases/tag/3.5.0)
adds the new [focus highlighting](doc/user-guide.md#focushighlighting) feature.
This optional feature enables highlighting of the focused dock widget like you
know it from Visual Studio.
![FocusHighlighting](doc/cfg_flag_FocusHighlighting.gif)
[learn more...](doc/user-guide.md#focushighlighting)
## Features
### Overview
- [New and Noteworthy](#new-and-noteworthy)
- [Features](#features)
- [Overview](#overview)
- [Docking everywhere - no central widget](#docking-everywhere---no-central-widget)
- [Docking inside floating windows](#docking-inside-floating-windows)
- [Grouped dragging](#grouped-dragging)
- [Perspectives for fast switching of the complete main window layout](#perspectives-for-fast-switching-of-the-complete-main-window-layout)
- [Opaque and non-opaque splitter resizing](#opaque-and-non-opaque-splitter-resizing)
- [Opaque and non-opaque undocking](#opaque-and-non-opaque-undocking)
- [Tab-menu for easy handling of many tabbed dock widgets](#tab-menu-for-easy-handling-of-many-tabbed-dock-widgets)
- [Many different ways to detach dock widgets](#many-different-ways-to-detach-dock-widgets)
- [Supports deletion of dynamically created dock widgets](#supports-deletion-of-dynamically-created-dock-widgets)
- [Python PyQt5 Bindings](#python-pyqt5-bindings)
- [Tested Compatible Environments](#tested-compatible-environments)
- [Supported Qt Versions](#supported-qt-versions)
- [Windows](#windows)
- [macOS](#macos)
- [Linux](#linux)
- [Build](#build)
- [Getting started / Example](#getting-started--example)
- [Developers](#developers)
- [License information](#license-information)
- [Alternative Docking System Implementations](#alternative-docking-system-implementations)
- [KDDockWidgets](#kddockwidgets)
- [QtitanDocking](#qtitandocking)
- [Donation](#donation)
- [Showcase](#showcase)
- [Qt Creator IDE](#qt-creator-ide)
- [Qt Design Studio](#qt-design-studio)
- [QmixElements](#qmixelements)
- [ezEditor](#ezeditor)
- [D-Tect X](#d-tect-x)
- [HiveWE](#hivewe)
- [Ramses Composer](#ramses-composer)
- [Plot Juggler](#plot-juggler)
### Docking everywhere - no central widget
There is no central widget like in the Qt docking system. You can dock on every
border of the main window or you can dock into each dock area - so you are
free to dock almost everywhere.
![Dropping widgets](doc/preview-dragndrop.png)
![Dropping widgets](doc/preview-dragndrop_dark.png)
### Docking inside floating windows
There is no difference between the main window and a floating window. Docking
into floating windows is supported.
![Docking inside floating windows](doc/floating-widget-dragndrop.png)
![Docking inside floating windows](doc/floating-widget-dragndrop_dark.png)
### Grouped dragging
When dragging the titlebar of a dock, all the tabs that are tabbed with it are
going to be dragged. So you can move complete groups of tabbed widgets into
a floating widget or from one dock area to another one.
![Grouped dragging](doc/grouped-dragging.gif)
![Grouped dragging](doc/grouped-dragging_dark.png)
### Perspectives for fast switching of the complete main window layout
A perspective defines the set and layout of dock windows in the main
window. You can save the current layout of the dockmanager into a named
perspective to make your own custom perspective. Later you can simply
select a perspective from the perspective list to quickly switch the complete
main window layout.
![Perspective](doc/perspectives.gif)
![Perspective](doc/perspectives_dark.png)
### Opaque and non-opaque splitter resizing
The advanced docking system uses standard QSplitters as resize separators and thus supports opaque and non-opaque resizing functionality of QSplitter. In some rare cases, for very complex widgets or on slow machines resizing via separator on the fly may cause flicking and glaring of rendered content inside a widget. The global dock manager flag `OpaqueSplitterResize` configures the resizing behaviour of the splitters. If this flag is set, then widgets are resized dynamically (opaquely) while interactively moving the splitters.
![Opaque resizing](doc/opaque_resizing.gif)
If this flag is cleared, the widget resizing is deferred until the mouse button is released - this is some kind of lazy resizing separator.
![Non-opaque resizing](doc/non_opaque_resizing.gif)
### Opaque and non-opaque undocking
By default, opaque undocking is active. That means, as soon as you drag a dock widget or a dock area with a number of dock widgets it will be undocked and moved into a floating widget and then the floating widget will be dragged around. That means undocking will take place immediatelly. You can compare this with opaque splitter resizing. If the flag `OpaqueUndocking` is cleared, then non-opaque undocking is active. In this mode, undocking is more like a standard drag and drop operation. That means, the dragged dock widget or dock area is not undocked immediatelly. Instead, a drag preview widget is created and dragged around to indicate the future position of the dock widget or dock area. The actual dock operation is only executed when the mouse button is released. That makes it possible, to cancel an active drag operation with the escape key.
The drag preview widget can be configured by a number of global dock manager flags:
- `DragPreviewIsDynamic`: if this flag is enabled, the preview will be adjusted dynamically to the drop area
- `DragPreviewShowsContentPixmap`: the created drag preview window shows a static copy of the content of the dock widget / dock are that is dragged
- `DragPreviewHasWindowFrame`: t
没有合适的资源?快使用搜索试试~ 我知道了~
Qt-Advanced-Docking-System-master
共534个文件
cpp:99个
obj:97个
h:66个
需积分: 0 15 下载量 2 浏览量
2022-08-12
12:47:16
上传
评论
收藏 28.56MB ZIP 举报
温馨提示
Qt-Advanced-Docking-System-master
资源详情
资源评论
资源推荐
收起资源包目录
Qt-Advanced-Docking-System-master (534个子文件)
setup.cfg 134B
GetGitRevisionDescription.cmake 5KB
adsConfig.cmake 260B
qtadvanceddockingConfig.cmake 87B
qtadvanceddockingConfig.cmake 87B
qrc_ads.cpp 260KB
qrc_ads.cpp 260KB
qrc_demo.cpp 128KB
DockContainerWidget.cpp 55KB
DockContainerWidget.cpp 55KB
FloatingDockContainer.cpp 38KB
FloatingDockContainer.cpp 38KB
DockManager.cpp 31KB
DockManager.cpp 31KB
MainWindow.cpp 29KB
DockAreaWidget.cpp 27KB
DockAreaWidget.cpp 27KB
DockWidget.cpp 25KB
DockWidget.cpp 25KB
DockOverlay.cpp 24KB
DockOverlay.cpp 24KB
DockWidgetTab.cpp 21KB
DockWidgetTab.cpp 21KB
DockAreaTitleBar.cpp 19KB
DockAreaTitleBar.cpp 19KB
moc_DockManager.cpp 16KB
moc_DockManager.cpp 16KB
moc_DockAreaTabBar.cpp 12KB
moc_DockAreaTabBar.cpp 12KB
DockAreaTabBar.cpp 12KB
DockAreaTabBar.cpp 12KB
ads_globals.cpp 12KB
ads_globals.cpp 12KB
FloatingDragPreview.cpp 12KB
FloatingDragPreview.cpp 12KB
moc_dockindockmanager.cpp 12KB
DockFocusController.cpp 11KB
DockFocusController.cpp 11KB
moc_DockWidget.cpp 10KB
moc_DockWidget.cpp 10KB
moc_DockWidgetTab.cpp 10KB
moc_DockWidgetTab.cpp 10KB
dockindockmanager.cpp 9KB
perspectives.cpp 9KB
dockindock.cpp 9KB
FloatingWidgetTitleBar.cpp 9KB
FloatingWidgetTitleBar.cpp 9KB
moc_DockAreaWidget.cpp 8KB
moc_DockAreaWidget.cpp 8KB
moc_DockOverlay.cpp 8KB
moc_DockOverlay.cpp 8KB
moc_perspectiveactions.cpp 7KB
moc_DockFocusController.cpp 6KB
moc_DockFocusController.cpp 6KB
ElidingLabel.cpp 6KB
ElidingLabel.cpp 6KB
moc_DockContainerWidget.cpp 6KB
moc_DockContainerWidget.cpp 6KB
moc_DockAreaTitleBar.cpp 6KB
moc_DockAreaTitleBar.cpp 6KB
moc_MainWindow.cpp 6KB
moc_perspectives.cpp 5KB
moc_ElidingLabel.cpp 5KB
moc_ElidingLabel.cpp 5KB
moc_DockAreaTitleBar_p.cpp 5KB
moc_DockAreaTitleBar_p.cpp 5KB
moc_FloatingDragPreview.cpp 5KB
moc_FloatingDragPreview.cpp 5KB
mainwindow.cpp 5KB
mainwindow.cpp 5KB
moc_FloatingDockContainer.cpp 4KB
moc_FloatingDockContainer.cpp 4KB
moc_dockindock.cpp 4KB
moc_StatusDialog.cpp 4KB
moc_mainwindow.cpp 3KB
moc_mainwindow.cpp 3KB
DockSplitter.cpp 3KB
DockSplitter.cpp 3KB
main.cpp 3KB
StatusDialog.cpp 3KB
moc_DockSplitter.cpp 3KB
moc_DockSplitter.cpp 3KB
moc_mainwindow.cpp 3KB
moc_MainWindow.cpp 3KB
moc_MainWindow.cpp 3KB
moc_mainframe.cpp 3KB
mainframe.cpp 3KB
DockComponentsFactory.cpp 2KB
DockComponentsFactory.cpp 2KB
MainWindow.cpp 2KB
main.cpp 2KB
IconProvider.cpp 2KB
IconProvider.cpp 2KB
MainWindow.cpp 1KB
mainwindow.cpp 1KB
perspectiveactions.cpp 1KB
DockingStateReader.cpp 996B
DockingStateReader.cpp 996B
main.cpp 194B
main.cpp 194B
共 534 条
- 1
- 2
- 3
- 4
- 5
- 6
Nachricht
- 粉丝: 6
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0