Rilasciato Qt 6

Dopo 9 anni dall’uscita di Qt 5, è stato finalmente rilasciata la prima versione di Qt 6. Rispettata la data di rilascio di Dicembre 2020, l’annuncio ufficiale è stato dato sul Qt Blog.

Ricapitolando le caratteristiche chiave di questa nuova major release:

  • La codebase è aggiornata a C++17, permettendo così di sfruttare a pieno le caratteristiche del linguaggio fino ad ora.
  • CMake è il nuovo sistema di build di default, con qmake tuttavia ancora supportato.
  • QML di nuova generazione.

La documentazione di Qt 6 non è ancora completa e data l’enormità del framework è molto difficile elencare tutte le modifiche e le novità, comunque vediamo un carrellata di quello che è stato annunciato o di cui si è parlato in articoli precedenti.

Modifiche alle librerie e API

Quello che spicca è il sistema di Property Binding ora disponibile lato C++. Le Property Binding sono un elemento centrale in QML su Qt 5, adesso è possibile emularne il comportamento anche da C++ tramite classe QProperty<T>. Personalmente è la novità che preferisco e che non vedo l’ora di provare su Qt 6. Troviamo inoltre:

  • Sono stati unificati QVector e QList.
  • QMetaType e QVariant sono stati potenziati, grazie alle nuove possibilità fornite da C++17.
  • QtCuncurrent è stato quasi completamente riscritto e garantiscono che ora sarà più facile che mai scrivere applicazioni multi-thread.

Migliorie grafiche

Riguardo il motore grafico, Qt 5 si basava pesantamente su OpenGL per la grafica 3D. Con Qt 6 è stato introdotto un nuovo livello di astrazione chiamato RHI (Rendering Hardware Interface) che rende possibile interfacciarsi direttamente con le API specifiche del sistema operativo, pertanto ad esempio si appoggerà automaticamente a Direct3D sotto Windows e Metal se su MacOS. QtQuick 3D permette di estendere QtQuick con moduli 3D e di mischiare facilmente contenuti 2D e 3D, appoggiandosi sempre al nuovo Qt RHI.

Conan gestirà le librerie aggiuntive

File:Conan package manager logo.png - Wikimedia Commons

Il Package Manager Conan, il più diffuso tra gli sviluppatori C++, verrà utilizzato per gestire le librerie aggiuntive. In questo momento sono solo tre le librerie aggiuntive distribuite tramite quest’ultimo e sono Qt Network Authorization, Qt Image Formats, and Qt 3D. Altre saranno rilasciate con il passare del tempo. Ulteriori informazioni sono pubblicate sulla Wiki e sul post di annuncio di qualche mese fa.

Compatibilità con Qt 5

Il porting è stato volutamente mantenuto il più facile e indolore possibile. Ovviamente alcune classi sono state deprecate e alcune rimosse, per cui è necessario prevedere un modo in cui la compatibilità con Qt 5 sia mantenuta il più possibile senza però vincolare l’ecosistema di Qt 6. La libreria Qt5Compat conterrà classi rimosse su Qt 6, ma mantenute su questa libreria per facilità di porting. La tabella seguente indica la classi rimosse in Qt 6 ma mantenute in Qt 5 e la loro alternativa nativa per Qt 6.

Portate su Qt5CompatRimpiazzo su Qt 6
QLinkedListstd::list*
QRegExpQRegularExpression
QStringRefQStringView
QXmlSimpleReaderQXmlStreamReader
QTextCodecQStringConverter
QTextEncoderQStringEncoder
QTextDecoderQStringDecoder

Piattaforme supportate

Le piattaforme dichiarate ad oggi supportate sono le seguenti:

  • Windows 10
  • MacOS 10.14 e successivi
  • Linux (Ubuntu 20.04, CentOS 8.1, OpenSuSE 15.1)
  • iOS 13 o successivi
  • Android API 23 o successive

Riguardo al lato embedded non sono ancora supportati gli ambienti in tempo reale supportati su Qt 5 e verranno reintegrati in versioni successive.

Lascia un commento