Qt 5.7 gelingt Spagat zwischen Traditionsverbundenheit und Neuigkeiten

Verbesserungen an Bekanntem sind oft ein zweischneidiges Schwert – insbesondere im Embedded-Bereich sind Entwickler über Änderungen nicht sonderlich froh. Das neue Qt 5.7 ist jedoch ein ein gelungenes Release.

In Pocket speichern vorlesen Druckansicht 51 Kommentare lesen
Qt 5.7 gelingt Spagat zwischen Traditionsverbundenheit und Neuigkeiten
Lesezeit: 4 Min.
Von
  • Tam Hanna
Inhaltsverzeichnis

Die neue Version 5.7 des plattformübergreifenden GUI-Entwicklungs-Frameworks Qt bringt neben einem 3D-Modul Änderungen an der Lizenzierung und dem Backend: Qt 5.7 setzt C++11 auf Seiten der Hostplattform zwingend voraus.

Qt bleibt freie Software. Fünf bisher nur kommerziell erhältliche Pakete sind nun für Open-Source-Entwickler freigegeben: Die Module Qt Charts, Qt Data Visualization, Qt Virtual Keyboard (GPLv3), Qt Quick 2D Renderer stehen mit der GPLv3, während die im Mobilbereich wichtige Purchasing-API unter der LGPL bereitsteht.

Qt 3D wird seit längerer Zeit vom Consulting-Unternehmen KDAB betreut, das sich im Laufe der Jahre eine Reputation im Bereich der Integration hauseigener Rendering-Engines in Qt erarbeitet hat. Die in Qt 5.7 enthaltene Version der Bibliothek implementiert eine Rendering-Chain auf Basis einer als Frame Graph bezeichneten Datenstruktur.

Für den Zugriff auf Game Pads sind keine nativen Codeinseln mehr erforderlich. Das noch als Technology Preview vorliegende Qt-Gamepad-Modul agiert unter Windows, Linux, Android und iOS als Wrapper um die native API.

Qt Creator 4.0 bietet mit dem Qt Quick Designer bessere Unterstützung für die mit Qt 5.6 eingeführte zweite Version der Qt Quick Controls. Es handelt sich dabei um einen weiteren Versuch zur Realisierung eines WYSIWYG-Editors für QML. Über die Controls selbst gibt es wenig zu berichten: Sie sind eine für Mobil- und Desktop-Anwendungen gleichermaßen geeignete Steuerelementbibliothek auf Basis von QML.

Das Qt WebEngine-System basiert nun auf Version 49 von Chromium. Neben den diversen von Google vorgenommenen Verbesserungen im Bereich Standard Compliance dürfen sich Entwickler auch auf eine "Print to PDF"-Funktion freuen, die das Erzeugen von Reports und Ähnlichem erleichtert.

Der schon seit längerer Zeit vorhandene JIT-Compiler (Just In Time) beschleunigt das Ausführen von Skripten nun auch unter WinRT und auf 64-bittigem Linux, die auf einem ARM-Prozessor arbeiten. Zudem sollen Optimierungen am Debugger und am Profiler für einen effizienteren Workflow sorgen.

Die Version 5.7 verbessert die Integration mit Yocto – das Einbinden der Cross-Platform-Umgebung in Yocto soll so offenbar einfacher von der Hand gehen. Dabei ist nicht einmal mehr ein Windows-Host erforderlich – das mit Qt 5.6 eingeführte Windows-Hostfeature ist nun offiziell verfügbar.

Wer kein eigenes Kernelimage kompilieren möchte, kann derweil auf eine Gruppe fertiger Images für weitverbreitete Prozessrechner zurückgreifen. In nicht allzu ferner Zukunft soll es zudem ein OTA-Feature für Qt-basierte Devices geben – im Moment handelt es sich dabei aber noch um Zukunftsmusik.

Android-Programmierer können Qt nun zur Realisierung von Services nutzen. Die Qt Multimedia API steht ab sofort auch für tvOS zur Verfügung, was die Entwicklung von Mediaplayern und anderen Video- und Sound-Apps erleichtert.

An Kommunikation Interessierte freuen sich derweil darüber, dass Qt NFC nun auch Android unterstützt. Beim Vorhandensein eines Bluez-basierten Bluetooth-Stacks können sie Qt jetzt auch zur Realisierung von BTLE-Peripherals nutzen – das Feature hat allerdings noch den Status einer Technical Preview darstellt.

Qt 5.7 bringt eine Liste kleiner Fehler mit, die für Betroffene allerdings ärgerlich sein können. In Verbindung mit GCC 5.2.1 gibt es bei Structs mit verschachtelten Konstruktoren Probleme mit unterbleibenden Aufrufen. Unter Android müssen Entwickler beim Erzeugen von Background-Services aufpassen – die Reaktivierung misslingt, wenn die App vom Nutzer im Task Switcher eliminiert wurde. Auch unter OS X gibt es Kleinigkeiten. (ane)