None
Programmierung

Qt 6.0 veröffentlicht

by Viktor Garske on Dec. 9, 2020, 12:55 p.m.
Am 08. Dezember 2020 wurde wie geplant zum Jahresende Qt 6.0 veröffentlicht. Unterstützung für C++17, eine neue Generation von QML, ein CMake Buildsystem sowie eine neue Grafikarchitektur sind die wichtigsten Änderungen.

Qt ist ein sehr verbreitetes plattformübergreifendes Anwendungsframework. Dabei steht klar die Entwicklung graphischer Benutzeroberflächen (GUIs) im Vordergrund, allerdings erweitert Qt generell die übliche Standardbibliothek um eine Vielzahl von Funktionen, die die Entwicklung vereinfachen sollen.

Nun wurde Version 6 des 25 Jahre alten Frameworks veröffentlicht, wie gestern im Qt-Blog angekündigt wurde. Dem Release vorausgegangen war die Vision aus August 2019.

Die Änderungen im Überblick

Qt 6.0 greift nun auf C++17 zurück, wodurch nun ein C++17-kompatibler Compiler Voraussetzung ist, um das Framework zu bauen.

Qt Core wurde an vielen Stellen verbessert: so ist nun das property und binding system neu, das direkt aus C++-Code angesprochen werden kann. Dabei lassen sich bestimmte Zusammenhänge festlegen, die dann vom Framework umgesetzt werden, wie bereits im dazugehörigen Blogartikel dazu umrissen wird:

class Rectangle {
public:
    Property<int> width;
    Property<int> height;
    Property<int> border;

    Rectangle() {
        height.setBinding(width);
        border.setBinding([this]() {
            return height / 10;
        });
    }
};

Mit diesem Code soll nun beispielsweise ermöglicht werden, dass ein Rechteck quadratisch ist (width == height) und ein Zehntel der Höhe die Rahmenbreite ist.

Die Integration von Unicode in Strings soll weitestgehend abgeschlossen sein.

QList und QVector werden vereinigt, wobei QVector als Grundlage nun dient und Elemente nun direkt im allokierten Speicher abgelegt werden, ohne nun mehr auf die komplexere Heap-Struktur zurückzugreifen.

Weitere Komponenten aus Qt Core wurden überarbeitet, darunter Qt Concurrent, Qt Network oder auch QMetaType und QVariant.

Während Qt 5 bisher auf OpenGL für die hardwareunterstütze Grafikbeschleunigung gesetzt hat, bekommt Qt Quick, ein Unterframework, das sich auf die schnelle deklarative Erstellung von Benutzeroberflächen fokussiert, mit dem neuen Major-Release einen Abstraktionslayer namens Rendering Hardware Interface (RHI). Dadurch kann auf die native Grafikarchitektur der Laufzeitumgebung zurückgegriffen werden, sodass auf Windows nun Direct3D und auf macOS Metal als Grafik-API genutzt wird.

Von der RHI profitieren auch Qt 3D sowie Qt Quick 3D, wobei letzteres die Qt Quick um 3D-Funktionalitäten erweitern und es ermöglicht, performant 2D-Inhalte in einer 3D-Szene zu platzieren.

Qt Quick Controls unterstützt darüber hinaus nun desktop styling.

Qt läuft auf einer Reihe von Plattformen, darunter die verbreiteten Desktopsysteme, aber auch mobile Plattformen und eingebettete Systeme. Um den spezifischen Anforderungen gerecht zu werden, wurden bisher Add-on-Module eingesetzt. Diese Funktionalität wurde nun in Qt integriert, wie im dazugehörigen Blogbeitrag beschrieben wird.

Beim Buildsystem stehen auch Änderungen an. Führen wir uns die bisherige Implementierung vor Augen, erkennen wir direkt die Bedeutung von qmake, welches aus .pro-Dateien Makefiles erzeugt. Qt 6.0 setzt nun allerdings auf CMake, wird in dieser Version allerdings noch qmake weiterhin unterstützen.

Portierung, Unterstützung, Ausblick

Das Qt-Team bietet eine Anleitung zur Umstellung auf Qt 6.0 an.

Unterstützut werden die verbreiteten Plattformen: Linux-Desktop, Windows 10, macOS ≥ 10.14, iOS ≥ 13, Android ≥ 6. Der Support von Embedded RTOS steht noch aus.

Zusammenfassung und IMHO

Der Major-Release setzt eine Vielzahl an Änderungen um, zum einen an der Oberfläche, zum anderen im Unterbau. Die Unterstützung von C++17 ist eine sinnvolle Neuerung. Eine vollständige Liste der Neuerungen ist hier im Qt Wiki verfügbar.

Wie bei Major-Releases von eng in Anwendungen verzahnten Frameworks üblich, wird wieder einige Zeit ins Land gehen, bis die Portierung erfolgt ist.

Mit keinem Wort im Blogpost wird allerdings die neue Lizenzpolitik erwähnt. Potentielle Änderungen hatten im April die KDE-Community bereits verunsichert. Diese würde Verzögerungen bei der FOSS-Veröffentlichung mit sich ziehen. Im Qt Wiki erklärt allerdings ein Artikel, wie Qt 6 weiterhin aus FOSS-Quellen bezogen werden kann. Dabei wird momentan noch auf das Qt5-Repo zurückgegriffen, welches auch Qt 6 beherbergt. Somit kann wohl vorerst noch Entwarnung gegeben werden, was die Quellen angeht.

Quelle: Blogartikel „Qt 6.0 Released“. Lars Knoll. 08. Dezember 2020.

Tags:
Author image
Viktor Garske

Viktor Garske ist der Hauptautor des Blogs und schreibt gerne über Technologie, Panorama sowie Tipps & Tricks.

Comments (0)

Comments are not enabled for this entry.