KDDockWidgets, en avanceret implementeringsramme for QDockWidget

KDQDockWidget

Gruppen KDAB er en softwarekonsulentvirksomhed til Qt, C ++ og OpenGL applikationer til forskellige platforme (desktop, integreret og mobil), ud over det giver vejledning til udvikling af Qt-applikationer fra bunden og ved overførsel af alle populære rammer til Qt.

I årenes løb, KDAB har bidraget og finansieret udviklingen af ​​QDockWidget. Men fordi ændringer og fejlrettelser tog mange dage at implementere ved hjælp af QdockWidget, Det viste sig ikke at være en god mulighed og dermed fødte KDDockWidgets.

KDDockWidgets er en avanceret docking-ramme til QDockWidgets, som den udvider brugen med ved at tilføje funktioner, som QDockWidgets ikke understøtter.

QdockWidget kombinerer indbygget GUI-kode med logik med tilstand, som gør det meget vanskeligt at komme videre med nye funktioner, hvilket medfører stor kompleksitet i implementeringen inden for de forskellige platforme. Da det er en grundlæggende komponent i en række grafiske brugergrænseflader, kan du med det flytte hele vindueelementer (værktøjslinjer, widgetgrupper osv.), Hvor du vil.

Imidlertid KDAB hævdede, at vedligeholdelse af QDockWidgets-kode ikke er særlig let, som han kommenterer at:

KDDockWidgets blev født ud af mit behov for at bevare min sundhed efter at have arbejdet på to projekter, der krævede omfattende tilpasning. En, hvor vi forsøgte at arbejde direkte opstrøms, men regressionstakten endte med at blive for meget.

Og en anden, hvor jeg tog ruten med at bruge private API'er, falske musebegivenheder og begivenhedsfiltre, som i starten virkede som en god idé, men som ender med at blive en verden af ​​smerte. Vores klienter blev også mere kreative med deres anmodninger, så det var klart, at vi havde brug for en bedre docking-ramme.

Det største problem er dens design, ganske monolitisk, men konfigurerbar (vi kan vælge de funktioner, der er tilgængelige for brugeren, selvom kun få mennesker gør det til animationer), med en spaghetti-kode (blanding af logik og komponenttilstand). Derfor kan enhver ændring skabe et stort antal regressioner.

Derfor har KDAB besluttet at oprette KDDockWidgets, som det søger at forenkle QDockWidgets-designet i høj grad, samtidig med at det letter tilpasningen til bestemte situationer.

KDDockWidgets indeholder følgende funktioner:

  • At være i stand til at forankre widgets i et flydende vindue og forankre den gruppe til hovedvinduet
  • Dock til ethvert vindue, ikke kun hovedvinduet
  • Docking til midten af ​​hovedvinduet
  • Understøttelse af aftagelige faner i den centrale widget i hovedvinduet
  • At kunne løsne faner fra en fanebjælke i et dockingområde
  • Evne til at kombinere flere faner ved at kombinere flere komponenter.
  • Udsæt interne hjælp-widgets, så brugeren kan tilpasse dem eller levere deres egne.
  • Komponentgrupper kan frit skifte fra et eksternt vindue (som kun indeholder denne komponentgruppe) til hovedvinduet (en funktion delvist implementeret i Qt 5.10).
  • Tilpas fane-widgets
  • Tilpas titellinjer
  • Tilpas vinduesrammer
  • Ud over at fremhæve, at den vigtigste ændring er tilføjelsen af ​​nøjagtige indikatorer for at fjerne elementer fra GUI, ud over det faktum, at begrebet central widget forsvinder, da det som sådan ikke længere er et specifikt element.

Den nye organisation adskiller tydeligt logikken fra den grafiske grænseflade, så den underliggende runtime er kan let genbruges til Qt Quick-grænseflader (hvilket i sidste ende forventes). Det gør det også nemt at tilpasse grænsefladen, brugeren kan levere deres egne widgets til enhver del af grænsefladen.

Derudover KDDockWidgets er beregnet til at være en ramme, så du nemt kan tilsidesætte grænsefladerne for at give brugerdefineret udseende og adfærd. KDDockWidgets er en open source-ramme, som er under GPLv2- og GPLv3-licenserne.

KDDockWidgets-koden samt en demo af den er tilgængelig I det følgende link.


Indholdet af artiklen overholder vores principper for redaktionel etik. Klik på for at rapportere en fejl her.

Vær den første til at kommentere

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.