
Gruppen KDAB är ett mjukvarukonsultföretag för Qt-, C++- och OpenGL-applikationer för de olika plattformarna (desktop, integrerad och mobil), utöver detta ger handledningar för att utveckla Qt-applikationer från grunden och om att porta alla populära ramverk till Qt.
Under åren, KDAB har bidragit och finansierat utvecklingen av QDockWidget. Men eftersom ändringar och buggfixar tog många dagar att implementera, använde QdockWidget, Det visade sig inte vara ett bra alternativ, vilket gav upphov till KDDockWidgets.
KDDockWidgets är ett avancerat dockningsramverk för QDockWidgets, som utökar användningen genom att lägga till funktioner som QDockWidgets inte stöder.
QdockWidget kombinerar naturligt GUI-kod med stateful logik, som gör det mycket svårt att driva framåt med nya funktioner, vilket orsakar stor komplexitet i dess implementering inom de olika plattformarna. Eftersom det är en grundläggande komponent i ett antal grafiska användargränssnitt låter det dig flytta hela fönsterelement (verktygsfält, widgetgrupper etc.) vart du vill.
Sin embargo, KDAB hävdade att QDockWidgets kodunderhåll inte är särskilt lätt, Så han kommenterar att:
KDDockWidgets föddes ur mitt behov av att bevara förståndet efter att ha arbetat med två projekt som krävde omfattande anpassning. En där vi försökte arbeta direkt uppströms men regressionshastigheten blev för hög.
Och en annan där jag gick vägen för att använda privata API: er, falska mushändelser och händelsefilter, vilket verkade som en bra idé till en början, men som slutade vara en värld av smärta. Våra kunder blev också mer kreativa med sina förfrågningar, så det var tydligt att vi behövde ett bättre dockningsramverk.
Det största problemet är dess design, ganska monolitisk men konfigurerbar (vi kan välja de funktioner som är tillgängliga för användaren, även om få människor gör det, för animationer), med spagettikod (rolig blandningslogik och komponenttillstånd). Därför kan varje förändring skapa ett stort antal regressioner.
Det är därför KDAB har beslutat att skapa KDDockWidgets, med vilken den strävar efter att avsevärt förenkla QDockWidgets design, samtidigt som den underlättar dess anpassning till särskilda situationer.
KDDockWidgets tillhandahåller följande funktioner:
- Att kunna docka widgets i ett flytande fönster och docka den gruppen till huvudfönstret
- Dockning till valfritt fönster, inte bara huvudfönstret
- Docka till mitten av huvudfönstret
- Stöd för löstagbara flikar i den centrala widgeten inne i huvudfönstret
- Att kunna separera flikar från en flikfält i ett dockningsområde
- Möjlighet att kombinera olika flikar genom att kombinera olika komponenter.
- Visa interna hjälpwidgetar så att användaren kan anpassa dem eller tillhandahålla sina egna.
- Komponentgrupper kan fritt byta från ett externt fönster (som bara innehåller denna komponentgrupp) till huvudfönstret (en funktion som delvis är implementerad i Qt 5.10).
- Anpassa flikwidgetar
- Anpassa titelrader
- Anpassa fönsterramar
- Förutom att markera att den huvudsakliga förändringen är tillägget av exakta indikatorer för att eliminera element från GUI, förutom det faktum att begreppet central widget försvinner, eftersom det som sådant inte längre är ett specifikt element.
Den nya organisationen skiljer tydligt logiken från det grafiska gränssnittet, så att den underliggande körtiden är kan enkelt återanvända för Qt Quick-gränssnitt (vilket i slutändan förväntas). Det gör det också enkelt att anpassa gränssnittet, användaren kan tillhandahålla sina egna widgets för vilken del av gränssnittet som helst.
Dessutom, KDDockWidgets är tänkt att vara ett ramverk, så att du enkelt kan åsidosätta gränssnitt att ge anpassat beteende och utseende. KDDockWidgets är ett ramverk med öppen källkod, som är licensierad under GPLv2- och GPLv3-licenserna.
KDDockWidgets-koden samt en demo av den är tillgängliga I följande länk.