
Grupa KDAB to firma zajmująca się doradztwem w zakresie oprogramowania dla aplikacji Qt, C++ i OpenGL dla różnych platform (stacjonarnych, zintegrowanych i mobilnych), oprócz tego zawiera samouczki dotyczące tworzenia aplikacji Qt od podstaw oraz na portowaniu wszystkich popularnych frameworków do Qt.
Przez lata KDAB wniósł wkład i sfinansował rozwój QDockWidget. Ale ponieważ wdrożenie zmian i poprawek błędów zajęło wiele dni przy użyciu QdockWidget, Okazało się, że nie jest to dobra opcja, dając początek KDDockWidgets.
KDDockWidgets jest zaawansowana platforma dokowania dla QDockWidgets, który rozszerza jego zastosowanie, dodając funkcje, których QDockWidgets nie obsługuje.
QdockWidget natywnie łączy kod GUI z logiką stanową, que lo bardzo utrudnia wprowadzanie nowych funkcji, co powoduje dużą złożoność jego implementacji na różnych platformach. Ponieważ jest podstawowym składnikiem wielu graficznych interfejsów użytkownika, pozwala przenosić całe elementy okna (paski narzędzi, grupy widżetów itp.) w dowolne miejsce.
Jednak KDAB przekonywał, że utrzymanie kodu QDockWidgets nie jest łatwe, Komentuje więc, że:
KDDockWidgets zrodziło się z mojej potrzeby zachowania zdrowego rozsądku po pracy nad dwoma projektami, które wymagały znacznego dostosowania. Jeden, w którym próbowaliśmy pracować bezpośrednio w górę, ale tempo regresji okazało się zbyt duże.
I jeszcze jeden, w którym poszedłem drogą korzystania z prywatnych interfejsów API, fałszywych zdarzeń myszy i filtrów zdarzeń, co na początku wydawało się dobrym pomysłem, ale skończyło się bólem. Ponadto nasi klienci byli coraz bardziej kreatywni w swoich żądaniach, więc było jasne, że potrzebujemy lepszej struktury dokowania.
Głównym problemem jest jego konstrukcja, dość monolityczny, ale konfigurowalny (możemy wybrać funkcje dostępne dla użytkownika, nawet jeśli niewielu to robi, dla animacji), spaghetti kodu (wesołe mieszanie logiki i stanu komponentów). Dlatego każda zmiana może spowodować dużą liczbę regresji.
Dlatego KDAB zdecydował się stworzyć KDDockWidgets, za pomocą którego stara się znacznie uprościć projekt QDockWidgets, jednocześnie ułatwiając jego dostosowanie do określonych sytuacji.
KDDockWidgets zapewnia następujące funkcje:
- Możliwość dokowania widżetów w ruchomym oknie i dokowania tej grupy do głównego okna
- Dokowanie do dowolnego okna, nie tylko głównego
- Zadokuj na środku głównego okna
- Obsługa odłączanych kart w centralnym widżecie w oknie głównym
- Możliwość oddzielenia kart od paska kart w obszarze dokowania
- Możliwość łączenia różnych zakładek poprzez łączenie różnych komponentów.
- Udostępnij wewnętrzne widżety pomocy, aby użytkownik mógł je dostosować lub udostępnić własne.
- Grupy komponentów mogą swobodnie przełączać się z zewnętrznego okna (które zawiera tylko tę grupę komponentów) do głównego okna (funkcja częściowo zaimplementowana w Qt 5.10).
- Dostosuj widżety kart
- Dostosuj paski tytułu
- Dostosuj ramy okienne
- Oprócz podkreślenia, że główną zmianą jest dodanie precyzyjnych wskaźników w celu wyeliminowania elementów z GUI, oprócz tego, że znika pojęcie centralnego widżetu, ponieważ jako taki nie jest już konkretnym elementem.
Nowa organizacja wyraźnie oddziela logikę od interfejsu graficznego, tak aby podstawowe środowisko uruchomieniowe było można z łatwością ponownie wykorzystać w interfejsach Qt Quick (co jest ostatecznie oczekiwane). Ułatwia również dostosowanie interfejsu, użytkownik może zapewnić własne widżety dla dowolnej części interfejsu.
Ponadto, KDDockWidgets ma być frameworkiem, dzięki czemu można łatwo zastąpić interfejsy w celu zapewnienia niestandardowego zachowania i wyglądu. KDDockWidgets to platforma typu open source, który jest objęty licencją GPLv2 i GPLv3.
Dostępny jest kod KDDockWidgets oraz jego wersja demonstracyjna W poniższym linku.