KDDockWidgets, un framework di implementazione avanzato per QDockWidget

KDQDockWidget

Il Gruppo KDAB è una società di consulenza software specializzata in applicazioni Qt, C++ e OpenGL per diverse piattaforme (desktop, embedded e mobile), oltre a offrire corsi di formazione per lo sviluppo di applicazioni Qt da zero e per la migrazione di tutti i framework più diffusi a Qt.

Nel corso degli anni, KDAB ha contribuito e finanziato lo sviluppo di QDockWidget . Tuttavia, poiché l'implementazione di modifiche e correzioni di bug richiedeva molti giorni, l'utilizzo di QDockWidget si è rivelato una scelta inadeguata, portando alla creazione di KDDockWidgets.

KDDockWidgets è un framework di docking avanzato per QDockWidgets , che ne amplia l'utilizzo aggiungendo funzioni non supportate da QDockWidgets.

QdockWidget combina nativamente il codice GUI con la logica di gestione dello stato, rendendo molto difficile l'aggiunta di nuove funzionalità e causando una notevole complessità di implementazione su diverse piattaforme. Essendo un componente fondamentale di diverse interfacce utente grafiche, consente di spostare interi elementi della finestra (barre degli strumenti, gruppi di widget, ecc.) ovunque si desideri.

Tuttavia, KDAB ha sostenuto che la manutenzione del codice di QDockWidgets non è molto semplice, affermando che:

KDDockWidgets è nato dalla mia esigenza di preservare la mia sanità mentale dopo aver lavorato su due progetti che richiedevano un'ampia personalizzazione. Uno in cui abbiamo provato a lavorare direttamente a monte, ma il tasso di regressione è risultato eccessivo.

E un altro in cui ho preso la strada dell'utilizzo di API private, eventi di mouse falsi e filtri di eventi, che all'inizio sembrava una buona idea, ma alla fine è stato un mondo di dolore. Inoltre, i nostri clienti stavano diventando più creativi con le loro richieste, quindi era chiaro che avevamo bisogno di un framework di docking migliore.

Il problema principale risiede nel suo design , che è piuttosto monolitico ma configurabile (possiamo scegliere le funzioni disponibili all'utente, anche se poche persone le utilizzano, ad esempio per le animazioni), con un codice spaghetti (che mescola allegramente logica e stato dei componenti). Pertanto, qualsiasi modifica può generare un gran numero di regressioni.

Per questo motivo KDAB ha deciso di creare KDDockWidgets , con il quale intende semplificare notevolmente la progettazione di QDockWidgets, facilitandone al contempo l'adattamento a situazioni specifiche.

KDDockWidgets fornisce le seguenti funzioni:

  • Essere in grado di ancorare i widget in una finestra mobile e ancorare quel gruppo alla finestra principale
  • Aggancia a qualsiasi finestra, non solo alla finestra principale
  • Ancoraggio al centro della finestra principale
  • Supporto per schede staccabili nel widget centrale all'interno della finestra principale
  • Essere in grado di staccare le schede da una barra delle schede in un'area di aggancio
  • Possibilità di combinare più schede combinando vari componenti.
  • Esporre i widget della guida interni in modo che l'utente possa personalizzarli o fornirne di propri.
  • I gruppi di componenti possono passare liberamente da una finestra esterna (che contiene solo questo gruppo di componenti) alla finestra principale (una funzionalità parzialmente implementata in Qt 5.10).
  • Personalizza i widget delle schede
  • Personalizza le barre del titolo
  • Personalizza gli infissi delle finestre
  • Oltre ad evidenziare che la principale novità è l'aggiunta di precisi indicatori per rimuovere elementi dalla GUI, oltre al fatto che scompare la nozione di widget centrale, poiché come tale non è più un elemento specifico.

La nuova organizzazione separa chiaramente la logica dall'interfaccia grafica , consentendo un facile riutilizzo del motore di runtime sottostante per le interfacce Qt Quick (come è previsto). Inoltre, facilita la personalizzazione dell'interfaccia: gli utenti possono fornire i propri widget per qualsiasi parte dell'interfaccia.

Inoltre, KDDockWidgets è concepito come un framework, quindi è possibile sovrascrivere facilmente le interfacce per fornire comportamenti e aspetto personalizzati. KDDockWidgets è un framework open source, rilasciato sotto licenza GPLv2 e GPLv3.

Il codice sorgente di KDDockWidgets, insieme a una sua demo, è disponibile al seguente link.


Aggiungi come fonte preferita in Google