Advanced Docking System for Qt
Go to file
mfreiholz 846535c085 Fixes crash, if only a single SectionContent elemet has been added to
ContainerWidget, make it floating and drop it back into ContainerWidget.
2016-02-23 09:30:17 +01:00
AdvancedDockingSystem Fixes crash, if only a single SectionContent elemet has been added to 2016-02-23 09:30:17 +01:00
AdvancedDockingSystemDemo Refactors: Move save/restore impl into separate methods. 2016-02-17 14:42:46 +01:00
.gitignore Init commit for GitHub. 2015-12-09 12:21:38 +01:00
.travis.yml Updates travis script. 2016-02-21 17:00:40 +01:00
build.pro Refactoring: Renames saveGeometry to saveState.. same for restore. 2016-02-12 11:43:34 +01:00
license.png Updates README, adds license. 2016-02-19 12:41:15 +01:00
preview01.png Adds previews. 2016-02-17 10:57:28 +01:00
preview02.png Adds previews. 2016-02-17 10:57:28 +01:00
README.md Updates README, adds license. 2016-02-19 12:41:15 +01:00

Advanced Docking System

Manages content widgets more like Visual Studio or similar programs. I also try to get everything done with basic Qt functionality. Basic usage of QWidgets an QLayouts and using basic styles as much as possible.

Layout of widgets Dropping widgets

Tested Compatible Environments

  • Windows 10 / Qt 5.5.1 / VC12
  • Windows 10 / Qt 5.5.1 / MinGW
  • Windows 10 / Qt 4.5.3 / VC9
  • Ubuntu 15.10

Build

Open the build.pro with QtCreator and start the build, that's it. You can run the demo project and test it yourself.

Release & Development

The master branch is not guaranteed to be stable or does not even build, since it is the main working branch. If you want a version that builds, you should always use a release/beta tag.

Developers

Manuel Freiholz, Project Maintainer

License information

WTFPL

This projects uses the WTFPL license (Do What The Fuck You Want To Public License)

Using it? Let us know by creating a new issue (You don't have to, of course).

Credits

ToDo List & Changelog

Items sorted by priority

Beta 0.2

  • It would be easier when the SectionTitleWidget and SectionContentWidget are created inside the "SectionContent::newSectionContent(..)" method. This would make sure, that those two objects always exists.
  • ContainerWidget::showSectionContent needs to insert the SC at the correct preferred position of SW
  • Empty splitters, if only 2 or 1 items are in container
  • Restore: Handle out-of-screen geometry for floating widgets

Beta 0.1

  • Improve FloatingWidget (Remove maximize button, only support close-button which hides the widget)
  • Serialize and Deserialize state/size/positions of dockings
  • Make compatible with Qt 4.5 (*ROFL!*)
  • Save and restore FloatingWidget states
  • Restore: Manage new or deleted SectionContent objects, which are not available
  • Working with outer-edge-drops sometimes leaves empty splitters #BUG
  • Clean up of unused e.g. count()<=1 QSplitters doesn't work well #BUG
  • Show close button on right corner of SectionWidget. How to safe last section position?
  • Serialize state of _hiddenSectionContents

Some day...

  • Drop indicator images should be fully visible over the DropOverlay rectangle
  • Pin contents: Pins a content and its title widget to the edge and opens on click/hover as long as it has focus
  • API: Make it possible to use custom drop images
  • API: Add possibility to make a SectionContent element floatable (ContainerWidget::setFloating(SectionContent*)?)

Notes

  • SectionContent class may safe a "size-type" property, which defines how the size of the widget should be handled.
    • PerCent: Resize in proportion to other widgets.
    • Fixed: Width or height are fixed (based on orientation).