KDDockWidgets, et avansert implementeringsrammeverk for QDockWidget

KDQDockWidget

Gruppen KDAB er en programvarekonsulentvirksomhet for Qt, C ++ og OpenGL applikasjoner for forskjellige plattformer (stasjonær, innebygd og mobil), i tillegg til det gir veiledning for å utvikle Qt-applikasjoner fra bunnen av og i å overføre alle populære rammer til Qt.

Gjennom årene, KDAB har bidratt og finansiert utviklingen av QDockWidget. Men fordi endringer og feilrettinger tok mange dager å implementere, ved hjelp av QdockWidget, Det viste seg ikke å være et godt alternativ, og dermed fødte KDDockWidgets.

KDDockWidgets er et avansert docking-rammeverk for QDockWidgets, som den utvider bruken av ved å legge til funksjoner som QDockWidgets ikke støtter.

QdockWidget kombinerer innfødt GUI-kode med logikk med tilstand, som gjør det veldig vanskelig å komme videre med nye funksjoner, som forårsaker stor kompleksitet i implementeringen innen de forskjellige plattformene. Siden det er en grunnleggende komponent i en serie grafiske brukergrensesnitt, kan du flytte hele vinduselementene (verktøylinjer, widgetgrupper osv.) Dit du vil.

Imidlertid KDAB hevdet at vedlikehold av QDockWidgets-kode ikke er veldig lett, som han kommenterer at:

KDDockWidgets ble født ut av mitt behov for å bevare sunn fornuft etter å ha jobbet med to prosjekter som krevde omfattende tilpasning. En der vi prøvde å jobbe direkte oppstrøms, men regresjonsgraden endte opp med å bli for mye.

Og en annen der jeg tok ruten med å bruke private API-er, falske musearrangementer og hendelsesfiltre, som i utgangspunktet virket som en god idé, men som til slutt ble en verden av smerte. Kundene våre ble også mer kreative med deres forespørsler, så det var tydelig at vi trengte et bedre docking-rammeverk.

Hovedproblemet er utformingen, ganske monolitisk, men konfigurerbar (vi kan velge funksjonene som er tilgjengelige for brukeren, selv om få mennesker gjør det, for animasjonene), med en spaghettikode (blander gjerne logikken og komponenttilstanden). Derfor kan enhver endring skape et stort antall regresjoner.

Derfor har KDAB bestemt seg for å opprette KDDockWidgets, som den søker å forenkle QDockWidgets-designen sterkt, samtidig som den letter tilpasningen til bestemte situasjoner.

KDDockWidgets har følgende funksjoner:

  • Å være i stand til å forankre widgets i et flytende vindu og forankre den gruppen til hovedvinduet
  • Dokk til et hvilket som helst vindu, ikke bare hovedvinduet
  • Dokking til midten av hovedvinduet
  • Støtte for avtakbare faner i den sentrale widgeten i hovedvinduet
  • Å være i stand til å løsne faner fra en fane i et dokkeområde
  • Evne til å kombinere flere faner ved å kombinere forskjellige komponenter.
  • Eksponere interne hjelp-widgets slik at brukeren kan tilpasse dem eller tilby sine egne.
  • Komponentgrupper kan fritt bytte fra et eksternt vindu (som bare inneholder denne komponentgruppen) til hovedvinduet (en funksjon som delvis er implementert i Qt 5.10).
  • Tilpass fane-widgeter
  • Tilpass tittellinjer
  • Tilpass vindusrammer
  • I tillegg til å markere at hovedendringen er tillegg av presise indikatorer for å fjerne elementer fra GUI, i tillegg til at begrepet sentral widget forsvinner, siden det ikke lenger er et spesifikt element.

Den nye organisasjonen skiller tydelig logikken fra det grafiske grensesnittet, slik at den underliggende kjøretiden er kan enkelt brukes på nytt for Qt Quick-grensesnitt (som til slutt forventes). Det gjør det også enkelt å tilpasse grensesnittet, brukeren kan tilby sine egne widgets for hvilken som helst del av grensesnittet.

Videre KDDockWidgets er ment å være et rammeverk, slik at du enkelt kan overstyre grensesnittene for å gi tilpasset utseende og oppførsel. KDDockWidgets er et open source-rammeverk, som er under GPLv2 og GPLv3 lisenser.

KDDockWidgets-koden samt en demo av den er tilgjengelig I den følgende lenken.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.