
Die KDAB Group ist eine Softwareberatung für Qt-, C++- und OpenGL-Anwendungen für verschiedene Plattformen (Desktop, Embedded und Mobile) und bietet darüber hinaus Schulungen zur Entwicklung von Qt-Anwendungen von Grund auf sowie zur Migration aller gängigen Frameworks zu Qt an.
KDAB hat über die Jahre zur Entwicklung von QDockWidget beigetragen und diese finanziert . Da die Implementierung von Änderungen und Fehlerbehebungen jedoch viele Tage in Anspruch nahm, erwies sich die Verwendung von QDockWidget als ungeeignet, was zur Entwicklung von KDDockWidgets führte.
KDDockWidgets ist ein fortschrittliches Docking-Framework für QDockWidgets , das dessen Einsatzmöglichkeiten durch zusätzliche Funktionen erweitert, die QDockWidgets nicht unterstützt.
QdockWidget kombiniert GUI-Code nativ mit zustandsbehafteter Logik, was die Integration neuer Funktionen erheblich erschwert und die Implementierung auf verschiedenen Plattformen deutlich komplexer gestaltet. Als Kernkomponente zahlreicher grafischer Benutzeroberflächen ermöglicht es das Verschieben ganzer Fensterelemente (Symbolleisten, Widget-Gruppen usw.) an beliebige Positionen.
KDAB argumentierte jedoch, dass die Pflege des QDockWidgets-Codes nicht sehr einfach sei, und erklärte:
KDDockWidgets entstand aus dem Bedürfnis heraus, meine geistige Gesundheit zu bewahren, nachdem ich an zwei Projekten gearbeitet hatte, die umfangreiche Anpassungen erforderten. In einem Fall haben wir versucht, direkt vorgelagert zu arbeiten, aber die Regressionsrate war zu hoch.
Und eine andere, bei der ich private APIs, gefälschte Mausereignisse und Ereignisfilter verwendet habe, was zunächst eine gute Idee war, aber letztendlich eine Welt voller Schmerzen war. Außerdem wurden unsere Kunden kreativer mit ihren Anfragen, sodass klar war, dass wir ein besseres Docking-Framework brauchten.
Das Hauptproblem liegt im Design , das zwar konfigurierbar, aber recht monolithisch ist (wir können die dem Benutzer zur Verfügung stehenden Funktionen auswählen, selbst wenn sie nur wenige nutzen, beispielsweise für Animationen), jedoch mit unübersichtlichem Spaghetti-Code (der Logik und Komponentenstatus vermischt). Daher kann jede Änderung zahlreiche Regressionen nach sich ziehen.
Aus diesem Grund hat KDAB beschlossen, KDDockWidgets zu entwickeln , mit dem das Design von QDockWidgets erheblich vereinfacht und gleichzeitig die Anpassung an besondere Situationen erleichtert werden soll.
KDDockWidgets bietet die folgenden Funktionen:
- Sie können Widgets in einem schwebenden Fenster andocken und diese Gruppe an das Hauptfenster andocken
- Andocken Sie an ein beliebiges Fenster, nicht nur an das Hauptfenster
- Andocken an die Mitte des Hauptfensters
- Unterstützung für abnehmbare Registerkarten im zentralen Widget im Hauptfenster
- Tabs von einer Tab-Leiste in einem Docking-Bereich trennen können
- Möglichkeit, mehrere Registerkarten durch Kombinieren verschiedener Komponenten zu kombinieren.
- Stellen Sie interne Hilfe-Widgets bereit, damit der Benutzer sie anpassen oder eigene bereitstellen kann.
- Komponentengruppen können frei von einem externen Fenster (das nur diese Komponentengruppe enthält) zum Hauptfenster wechseln (eine Funktion, die teilweise in Qt 5.10 implementiert ist).
- Passen Sie Registerkarten-Widgets an
- Passen Sie die Titelleisten an
- Fensterrahmen anpassen
- Zusätzlich zur Hervorhebung, dass die Hauptänderung das Hinzufügen präziser Indikatoren zum Entfernen von Elementen aus der GUI ist, verschwindet der Begriff des zentralen Widgets, da es als solches kein spezifisches Element mehr ist.
Die neue Struktur trennt die Logik klar von der grafischen Benutzeroberfläche , sodass die zugrundeliegende Laufzeitumgebung problemlos für Qt Quick-Oberflächen wiederverwendet werden kann (was letztendlich erwartet wird). Sie erleichtert zudem die Anpassung der Benutzeroberfläche; Benutzer können eigene Widgets für jeden Bereich der Oberfläche bereitstellen.
Darüber hinaus ist KDDockWidgets als Framework konzipiert, sodass Sie die Schnittstellen einfach überschreiben und so benutzerdefiniertes Verhalten und Erscheinungsbild realisieren können. KDDockWidgets ist ein Open-Source-Framework und unter den Lizenzen GPLv2 und GPLv3 lizenziert.
Der KDDockWidgets-Code sowie eine Demoversion sind unter folgendem Link verfügbar.