KDDockWidgets, pokročilý implementační rámec pro QDockWidget

Widget KDQDock

Skupina KDAB je softwarová konzultace pro aplikace Qt, C ++ a OpenGL pro různé platformy (stolní, vestavěné a mobilní) poskytuje doučování k vývoji aplikací Qt od nuly a při přenosu všech oblíbených snímků do Qt.

V průběhu let, KDAB přispělo a financovalo vývoj QDockWidget. Ale protože změny a opravy chyb trvalo mnoho dní implementovat, pomocí QdockWidget, Ukázalo se, že to není dobrá volba, a tak se zrodil KDDockWidgets.

KDDockWidgets je pokročilý dokovací rámec pro QDockWidgets, s nimiž rozšiřuje své použití přidáním funkcí, které QDockWidgets nepodporují.

QdockWidget nativně kombinuje kód GUI s logikou se stavem, jak díky novým funkcím je velmi obtížné posunout se vpřed, což způsobuje jeho implementaci v rámci různých platforem velkou složitost. Jelikož je základní součástí řady grafických uživatelských rozhraní, můžete s ním přesouvat celé prvky okna (panely nástrojů, skupiny widgetů atd.), Kamkoli chcete.

Nicméně, KDAB tvrdil, že údržba kódu QDockWidgets není příliš snadná, jak poznamenává, že:

KDDockWidgets se zrodil z mé potřeby zachovat si zdravý rozum poté, co jsem pracoval na dvou projektech, které vyžadovaly rozsáhlé přizpůsobení. Jeden, kde jsme se snažili pracovat přímo proti proudu, ale míra regrese byla nakonec příliš velká.

A další, kde jsem se vydal cestou používání soukromých API, falešných událostí myší a filtrů událostí, což se zpočátku zdálo jako dobrý nápad, ale nakonec to bylo světem bolesti. Naši klienti také byli se svými požadavky kreativnější, takže bylo jasné, že potřebujeme lepší dokovací rámec.

Hlavním problémem je jeho design, docela monolitické, ale konfigurovatelné (můžeme si vybrat funkce, které má uživatel k dispozici, i když to málokdo dělá, pro animace), se špagetovým kódem (šťastně míchající logiku a stav komponenty). Jakákoli změna může proto vytvořit velký počet regresí.

Proto se KDAB rozhodla vytvořit KDDockWidgets, kterým se snaží výrazně zjednodušit design QDockWidgets a zároveň usnadnit jeho přizpůsobení konkrétním situacím.

KDDockWidgets poskytuje následující funkce:

  • Umět ukotvit widgety v plovoucím okně a ukotvit tuto skupinu do hlavního okna
  • Ukotvit do libovolného okna, nejen do hlavního okna
  • Ukotvení do středu hlavního okna
  • Podpora odnímatelných karet v centrálním widgetu v hlavním okně
  • Možnost odpojit karty od lišty karet v dokovací oblasti
  • Schopnost kombinovat několik záložek kombinací různých komponent.
  • Vystavte interní widgety nápovědy, aby si je uživatel mohl přizpůsobit nebo poskytnout své vlastní.
  • Skupiny komponent se mohou volně přepínat z externího okna (které obsahuje pouze tuto skupinu komponent) do hlavního okna (funkce částečně implementovaná v Qt 5.10).
  • Přizpůsobte si widgety karet
  • Přizpůsobte záhlaví
  • Přizpůsobte okenní rámy
  • Kromě zdůraznění, že hlavní změnou je přidání přesných indikátorů k odstranění prvků z grafického uživatelského rozhraní, kromě skutečnosti, že pojem centrální widget zmizí, protože jako takový již nejde o konkrétní prvek.

Nová organizace jasně odděluje logiku od grafického rozhraní, takže základní runtime je lze snadno znovu použít pro Qt Quick rozhraní (což se nakonec očekává). Rovněž usnadňuje přizpůsobení rozhraní, uživatel může poskytnout své vlastní widgety pro jakoukoli část rozhraní.

Navíc, KDDockWidgets má sloužit jako framework, takže můžete snadno přepsat rozhraní poskytnout vlastní vzhled a chování. KDDockWidgets je open source framework, který podléhá licencím GPLv2 a GPLv3.

K dispozici je kód KDDockWidgets i jeho ukázka Na následujícím odkazu.


Přidat jako preferovaný zdroj v Googlu