Sign up for the KDAB Newsletter
Stay on top of the latest news, publications, events and more.
Go to Sign-up
KDDockWidgets is an effort by KDAB to provide an advanced docking system for Qt.
Throughout the years KDAB has contributed and funded QDockWidget development. Sadly, this wasn't without pain: each change took many days to implement and an equal amount of time to fix regressions.
QDockWidget
mixes GUI code with logic/state in a spaghetti manner, making it
very hard to move forward. In hindsight, what caused this complexity was the
combinatorial explosion of options it supports (which seem unneeded to me, as
most people just want to use all the features). That, times 3 platforms, which
have different nuances, times 2, since code behaves drastically different if
you have animations enabled or not.
KDDockWidgets was born from my need to preserve sanity after having worked in two projects that needed extensive customization.
One where we tried to work directly upstream but the regression rate ended up being too much. And another one where I took the route of using private API, fake mouse events and event filters, which seemed like a good idea at first, but ended up being a world of pain. Furthermore, our customers were getting more creative with their requests, so it was clear we needed a better docking framework.
The immediate differences you can spot are the very precise docking indicators and the total freedom in terms of docking areas.
Here's a comprehensive list:
QDockWidget
for Qt 5.10, but dropping the floating window back to main window was too difficult to finish.)Moreover, it intends to be a framework, so you can easily override interfaces to provide custom behaviour and appearance.
KDDockWidgets is Open Source (GPLv2 & GPLv3). Alternatively contact KDAB for other licensing options
if you need it in proprietary software.
In the last months we've been having fun using KDDockWidgets in a couple of customer projects already, incorporating valuable feedback into the API. The next step is getting official documentation and source/binary-compat guarantees, in preparation for the 1.0 release. I also hope to gather feature requests from the community, so feel free to comment here or drop me an e-mail.
View our 'Widgets and more' video series
Yes, widgets are still alive and kicking. In the many years we have worked with them, we have gathered quite a number of tips and tricks that we’d love to share with you.
About KDAB
The KDAB Group is a globally recognized provider for software consulting, development and training, specializing in embedded devices and complex cross-platform desktop applications. In addition to being leading experts in Qt, C++ and 3D technologies for over two decades, KDAB provides deep expertise across the stack, including Linux, Rust and modern UI frameworks. With 100+ employees from 20 countries and offices in Sweden, Germany, USA, France and UK, we serve clients around the world.
Stay on top of the latest news, publications, events and more.
Go to Sign-up
Upgrade your applications from Qt 5 to Qt 6 with KDAB’s migration services. Get a free migration assessment and join a hands-on workshop to prepare your team for a successful transition!
Learn more
11 Comments
4 - Nov - 2019
Eeli Kaikkonen
What about other Qt licences, at least GPL 3?
5 - Nov - 2019
Sérgio Martins
Might have been an oversight, GPLv3 should be possible, will check.
6 - Nov - 2019
Dzmitry
Great start! It would be nice to have such framework as part of Qt in the future. Do you have the plans?
8 - Nov - 2019
Nicolas Arnaud-Cormos
Hi Dzmitry,
As Sergio explained in the blog, we actually tried to improve QDockWidget, but reached a dead-end at some point, that's the whole reason for this external library. We don't plan on pushing this library upstream in Qt.
28 - Nov - 2019
Uwe Kindler
Hi Dzmitry,
if you look for an alternative advanced docking system implementation, then you could also consider this one: https://github.com/githubuser0xFFFF
6 - Nov - 2019
Alex
So, is it possible to use it in close-source software?
8 - Nov - 2019
Nicolas Arnaud-Cormos
Hi Alex,
It is possible to use it in a close-source software, the library is dual license GPL/Commercial. If you are interested, please contact us at info@kdab.com
Thank you
28 - Nov - 2019
Uwe Kindler
Wow, a really cool docking framework for Qt - I like it. Great work guys. It looks like advanced docking is something that the people really need because this is already the 3rd advanced docking framework for Qt. ;o)
If someone prefers LGPL2.1 license, then this one might be a nice alternative that I have written in Qt and that we already use in a commercial software: https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System
And here is another nice commercial offering for an advanced Qt docking system: https://www.devmachines.com/qtitandocking-overview.html
The cool thing about KDDockWidgets is the possibility to provide a future QtQuick backend. In my Qt Advanced Docking System I focused completely on QWidgets.
Anyway, great to see nice docking solutions for Qt.
15 - Jul - 2020
hannes
Hi, cool framework. Is it possible to highlight the widget/frame which has currently the focus? I cant see it in the demo above. Kind regards Hannes
15 - Jul - 2020
Sérgio Martins
Are you talking about keyboard focus ? Usually only widgets accepting input should have focus, I don't see much value with highlighting a certain dock widget. Unless you want to make it easier to see that some line edit inside it has focus ? Anyway, it's possible by sub-classing from the frame class, and do your custom painting there.
31 - Jul - 2020
hannes
Yes i meant the one with the keyboard focus. Sorry for my late reply