
Grupul KDAB este o consultanță software pentru aplicațiile Qt, C ++ și OpenGL pentru diferite platforme (desktop, încorporat și mobil), pe lângă acestea oferă îndrumare pentru a dezvolta aplicații Qt de la zero și în transferul tuturor cadrelor populare în Qt.
De-a lungul anilor, KDAB a contribuit și a finanțat dezvoltarea QDockWidget. Dar, deoarece modificările și remedierile de erori au durat multe zile până la implementare, folosind QdockWidget, S-a dovedit a nu fi o opțiune bună, dând astfel nașterea KDDockWidgets.
KDDockWidgets este un cadru de andocare avansat pentru QDockWidgets, cu care își extinde utilizarea prin adăugarea de funcții pe care QDockWidgets nu le acceptă.
QdockWidget combină în mod nativ codul GUI cu logica cu starea, ca face foarte dificil să avansezi cu funcții noi, ceea ce cauzează o mare complexitate în implementarea sa în cadrul diferitelor platforme. Deoarece este o componentă de bază a unui număr de interfețe grafice de utilizator, cu aceasta puteți muta elemente întregi ale ferestrei (bare de instrumente, grupuri de widget-uri etc.) oriunde doriți.
Sin embargo, KDAB a susținut că menținerea codului QDockWidgets nu este foarte ușoară, în timp ce comentează că:
KDDockWidgets s-a născut din nevoia mea de a-mi păstra sănătatea după ce am lucrat la două proiecte care aveau nevoie de o personalizare extinsă. Unul în care am încercat să lucrăm direct în amonte, dar rata de regresie a ajuns să fie prea mare.
Și un altul în care am luat ruta utilizării API-urilor private, a evenimentelor false ale mouse-ului și a filtrelor de evenimente, care la început mi s-a părut o idee bună, dar a ajuns să fie o lume a durerii. De asemenea, clienții noștri deveneau tot mai creativi cu solicitările lor, așa că era clar că aveam nevoie de un cadru de andocare mai bun.
Principala problemă este designul său, destul de monolitic dar configurabil (putem alege funcțiile disponibile utilizatorului, chiar dacă puțini oameni o fac, pentru animații), cu cod spaghetti (amestecând vesel logica și starea componentelor). Prin urmare, orice modificare poate crea un număr mare de regresii.
De aceea, KDAB a decis să creeze KDDockWidgets, cu care încearcă să simplifice foarte mult designul QDockWidgets, facilitând în același timp adaptarea acestuia la anumite situații.
KDDockWidgets oferă următoarele funcții:
- Posibilitatea de a andoca widget-uri într-o fereastră plutitoare și de a andoca acel grup la fereastra principală
- Andocați la orice fereastră, nu doar la fereastra principală
- Andocare în centrul ferestrei principale
- Suport pentru filele detașabile din widgetul central din fereastra principală
- Posibilitatea de a detașa filele dintr-o bară de file dintr-o zonă de andocare
- Capacitatea de a combina mai multe file combinând mai multe componente.
- Expunerea widgeturilor de ajutor intern, astfel încât utilizatorul să le poată personaliza sau să le ofere propriile lor.
- Grupurile de componente pot trece liber de la o fereastră externă (care conține doar acest grup de componente) la fereastra principală (o caracteristică parțial implementată în Qt 5.10).
- Personalizați widgeturile de filă
- Personalizați barele de titlu
- Personalizați ramele ferestrelor
- În plus față de sublinierea faptului că principala modificare este adăugarea unor indicatori precisi pentru a elimina elemente din GUI, pe lângă faptul că noțiunea de widget central dispare, deoarece ca atare nu mai este un element specific.
Noua organizație separă în mod clar logica de interfața grafică, astfel încât timpul de rulare subiacent este poate fi ușor reutilizat pentru interfețele Qt Quick (ceea ce în cele din urmă este de așteptat). De asemenea, facilitează personalizarea interfeței, utilizatorul poate furniza propriile widget-uri pentru orice parte a interfeței.
În plus, KDDockWidgets este conceput pentru a fi un cadru, astfel încât să puteți suprascrie cu ușurință interfețele pentru a oferi aspect și comportament personalizat. KDDockWidgets este un cadru open source, care se află sub licențele GPLv2 și GPLv3.
Codul KDDockWidgets, precum și o demonstrație a acestuia sunt disponibile În următorul link.