KDDockWidgets, een geavanceerd implementatieframework voor QDockWidget

KDQDockWidget

De KDAB Group is een softwareadviesbureau voor Qt-, C++- en OpenGL-applicaties voor verschillende platformen (desktop, embedded en mobiel). Daarnaast bieden we begeleiding bij het ontwikkelen van Qt-applicaties vanaf nul en bij de migratie van alle populaire frameworks naar Qt.

KDAB heeft in de loop der jaren bijgedragen aan en de ontwikkeling van QDockWidget gefinancierd . Omdat het implementeren van wijzigingen en bugfixes echter vele dagen in beslag nam, bleek het gebruik van QDockWidget geen goede keuze, wat leidde tot de creatie van KDDockWidgets.

KDDockWidgets is een geavanceerd dockingframework voor QDockWidgets , dat het gebruik ervan uitbreidt door functies toe te voegen die QDockWidgets niet ondersteunt.

QdockWidget combineert van nature GUI-code met stateful logica, waardoor het erg moeilijk is om nieuwe functies toe te voegen en de implementatie op verschillende platformen aanzienlijk complexer wordt. Als kerncomponent van diverse grafische gebruikersinterfaces stelt het je in staat om complete vensterelementen (toolbars, widgetgroepen, enz.) naar elke gewenste locatie te verplaatsen.

KDAB voerde echter aan dat het onderhouden van de QDockWidgets-code niet erg eenvoudig is, en verklaarde het volgende:

KDDockWidgets is ontstaan ​​uit mijn behoefte om mijn gezond verstand te behouden nadat ik aan twee projecten had gewerkt die uitgebreid moesten worden aangepast. Een waarbij we probeerden direct stroomopwaarts te werken, maar het tempo van de regressie werd uiteindelijk te hoog.

En een andere waarbij ik de weg nam om privé-API's, nepmuisgebeurtenissen en gebeurtenisfilters te gebruiken, wat in eerste instantie een goed idee leek, maar uiteindelijk een wereld van pijn werd. Onze klanten werden ook creatiever met hun verzoeken, dus het was duidelijk dat we een beter docking-framework nodig hadden.

Het grootste probleem is het ontwerp , dat nogal monolithisch maar wel configureerbaar is (we kunnen de functies kiezen die de gebruiker ter beschikking staan, zelfs als weinig mensen ze gebruiken, bijvoorbeeld voor animaties), met spaghetti-code (waarin logica en componentstatus vrolijk door elkaar lopen). Daardoor kan elke wijziging een groot aantal regressies veroorzaken.

Daarom heeft KDAB besloten om KDDockWidgets te ontwikkelen , dat tot doel heeft het ontwerp van QDockWidgets aanzienlijk te vereenvoudigen en tegelijkertijd de aanpassing ervan aan specifieke situaties te vergemakkelijken.

KDDockWidgets biedt de volgende functies:

  • Widgets in een zwevend venster kunnen dokken en die groep aan het hoofdvenster kunnen koppelen
  • Dock aan elk venster, niet alleen aan het hoofdvenster
  • Koppelen aan het midden van het hoofdvenster
  • Ondersteuning voor afneembare tabbladen in de centrale widget in het hoofdvenster
  • Tabbladen kunnen loskoppelen van een tabbalk in een dockinggebied
  • Mogelijkheid om verschillende tabbladen te combineren door verschillende componenten te combineren.
  • Interne help-widgets vrijgeven zodat de gebruiker deze kan aanpassen of zelf kan voorzien.
  • Componentgroepen kunnen vrijelijk overschakelen van een extern venster (dat alleen deze componentgroep bevat) naar het hoofdvenster (een functie die gedeeltelijk geïmplementeerd is in Qt 5.10).
  • Pas tabbladwidgets aan
  • Pas titelbalken aan
  • Pas raamkozijnen aan
  • Naast het benadrukken dat de belangrijkste verandering de toevoeging is van precieze indicatoren om elementen uit de GUI te verwijderen, naast het feit dat het begrip centrale widget verdwijnt, omdat het als zodanig niet langer een specifiek element is.

De nieuwe structuur scheidt de logica duidelijk van de grafische interface , waardoor de onderliggende runtime-engine eenvoudig hergebruikt kan worden voor Qt Quick-interfaces (wat uiteindelijk ook de bedoeling is). Het maakt ook interface-aanpassing mogelijk; gebruikers kunnen hun eigen widgets toevoegen voor elk onderdeel van de interface.

Bovendien is KDDockWidgets bedoeld als een framework, waardoor je de interfaces eenvoudig kunt overschrijven om aangepast gedrag en uiterlijk te bieden. KDDockWidgets is een open-source framework, gelicentieerd onder de GPLv2- en GPLv3-licenties.

De code van KDDockWidgets, evenals een demo ervan, zijn beschikbaar via de volgende link.


Voeg dit toe als voorkeursbron in Google.