
Skupina KDAB je softvérové poradenstvo pre aplikácie Qt, C ++ a OpenGL pre rôzne platformy (desktop, embedded a mobile) poskytuje doučovanie pre vývoj aplikácií Qt od nuly a pri prenose všetkých populárnych rámcov do Qt.
V priebehu rokov KDAB prispela a financovala vývoj QDockWidget. Ale pretože implementácia zmien a opráv chýb trvala mnoho dní, pomocou QdockWidget, Ukázalo sa, že to nebola dobrá voľba, a tak sa zrodili KDDockWidgets.
KDDockWidgets je pokročilý dokovací rámec pre QDockWidgets, s ktorými rozširuje svoje použitie pridaním funkcií, ktoré QDockWidgets nepodporujú.
QdockWidget natívne kombinuje kód GUI s logikou so stavom, ako veľmi sťažuje posun vpred s novými funkciami, čo spôsobuje veľkú zložitosť jeho implementácie v rámci rôznych platforiem. Pretože je to základná súčasť série grafických používateľských rozhraní, môžete s ňou presunúť celé prvky okna (panely nástrojov, skupiny widgetov atď.) Kamkoľvek chcete.
Avšak, KDAB tvrdil, že údržba kódu QDockWidgets nie je veľmi jednoduchá, keď poznamenáva, že:
KDDockWidgets sa zrodil z mojej potreby zachovať si zdravý rozum po tom, čo som pracoval na dvoch projektoch, ktoré si vyžadovali rozsiahle prispôsobenie. Jeden, kde sme sa snažili pracovať priamo proti prúdu, ale miera regresie bola nakoniec príliš veľká.
A ďalší, kde som sa vydal cestou používania súkromných API, falošných udalostí myší a filtrov udalostí, čo sa spočiatku javilo ako dobrý nápad, ale nakoniec to bol svet bolesti. Naši klienti tiež začali byť kreatívnejší so svojimi požiadavkami, takže bolo zrejmé, že potrebujeme lepší dokovací rámec.
Hlavným problémom je jeho dizajn, celkom monolitické, ale konfigurovateľné (pre animácie si môžeme zvoliť funkcie, ktoré má používateľ k dispozícii, aj keď to málokto robí), so špagetovým kódom (veselo miešajúce logiku a stav komponentov). Akákoľvek zmena preto môže spôsobiť veľké množstvo regresií.
Preto sa KDAB rozhodla vytvoriť KDDockWidgets, pomocou ktorého sa snaží výrazne zjednodušiť dizajn QDockWidgets a zároveň uľahčiť jeho prispôsobenie konkrétnym situáciám.
KDDockWidgets poskytuje nasledujúce funkcie:
- Byť schopný ukotviť widgety do plávajúceho okna a ukotviť túto skupinu do hlavného okna
- Dok pre každé okno, nielen pre hlavné okno
- Ukotvenie do stredu hlavného okna
- Podpora odnímateľných kariet v centrálnej miniaplikácii v hlavnom okne
- Byť schopný odpojiť karty od panela kariet v dokovacej oblasti
- Schopnosť kombinovať niekoľko kariet kombináciou rôznych komponentov.
- Vystavte widgety internej pomoci, aby si ich používateľ mohol prispôsobiť alebo poskytnúť svoje vlastné.
- Skupiny komponentov môžu voľne prechádzať z externého okna (ktoré obsahuje iba túto skupinu komponentov) do hlavného okna (funkcia čiastočne implementovaná v Qt 5.10).
- Prispôsobte si widgety kariet
- Prispôsobte si záhlavie
- Prispôsobte si okenné rámy
- Okrem zdôraznenia toho, že hlavnou zmenou je pridanie presných indikátorov na odstránenie prvkov z grafického používateľského rozhrania, okrem toho, že pojem centrálny widget zmizol, pretože už nejde o konkrétny prvok.
Nová organizácia jasne oddeľuje logiku od grafického rozhrania, takže základný runtime je možno ľahko znovu použiť pre Qt rýchle rozhrania (čo sa nakoniec očakáva). Uľahčuje tiež prispôsobenie rozhrania, používateľ môže poskytnúť vlastné widgety pre ľubovoľnú časť rozhrania.
Okrem toho, KDDockWidgets má byť rámcom, takže môžete ľahko prepísať rozhrania poskytnúť vlastný vzhľad a správanie. KDDockWidgets je rámec otvoreného zdroja, ktorá je predmetom licencií GPLv2 a GPLv3.
K dispozícii je kód KDDockWidgets a jeho ukážka Na nasledujúcom odkaze.