Qt 6はQtの新しいメジャーリリースであり、LinuxのKDEデスクトップ環境を強化するGUIアプリを作成するための無料のオープンソースクロスプラットフォームツールキットである。Qt 6では、完全なソース互換性を維持するよう努められている一方で、QMLの改善、新しいグラフィックアーキテクチャ、C++17のサポート、ツールの改善など、多くの変更がある。
Qt 6は、クロスプラットフォームのサポート、複数のフォームファクターにわたるスケーラビリティ、保守性、以前のバージョンとの互換性など、通常のQtの信条を守っている。
現在Qtを商業的に開発およびサポートしているThe Qt Companyによると、QMLはQt Quickとともに、Qtの最も急速に成長している部分の1つであった。そこで、同社はメジャーリリースのチャンスを利用して、いわゆる「次世代QML」の開発に着手した。Qt 6.0では、QtCoreのproperty/bindingsを含むいくつかの準備作業が行われ、将来のマイナーリリースでのQML開発のさらなる道が開かれた。QMLの実際の計画では、強い型付けのサポート、重複したデータ構造を削除することによるQObjectとQMLのインテグレーションの改善、C++への効率的なコンパイルなどがある。これらの変更は、不要なオーバーヘッドを排除することでパフォーマンスにも影響があるはずである。
グラフィックスフロントに対して、Qt 6は、OpenGLからの移行に備えて多くの変更を加えている。これは、Appleプラットフォーム上のVulkan for LinuxおよびMetalを優先して非推奨になった。この目的のために、Qt 6はグラフィックスAPIをカプセル化する新しいレイヤーを導入し、将来的に異種の低レベルAPIとシームレスに連携できるようにする。さらに、2Dコンテンツと3Dコンテンツを簡単に混合できるように、Qt 6ではQt Quick 3Dが導入されている。これは、Qt Quickを3Dが利用できるように拡張したものである。Qt Quick 3Dは、glTF2のサポートも改善している。レンダラーとリソース管理を改善し、iOSの公式サポートを提供する。
Qt Quickは、UI要素のネイティブスタイルのサポートを改善し、ネイティブのルックアンドフィールを可能となっている。ネイティブコントロールの数を増やす取り組みが進行中であり、スイッチやレンジスライダーコントロールを含む新しいコントロールがQt 6の将来のマイナーリリースで追加される予定である。
前述のように、Qt 6では、より高度な言語機能を採用するためにC++17が要件になっている。Qt 5がC++98をベースにしていたことを考えると、これは大きな飛躍を意味し、Qt 6 APIで最新のC++構文のサポートを提供する道を開いている。
C++は特別な設定をすることなく使用できる多くの機能を提供しています。Qt 5では利用できなかったものです。Qt 6の目標は、下位互換性を失うことなく、この機能と適切にインテグレーションすることです。
最後に、Qt 6は、その幅広い可用性とコミュニティによる拡張サポートにより、ビルドシステムとしてCMakeを正式に採用している。Qtの古いビルドシステムであるqmakeはまだ廃止されないが、新しいプロジェクトではCMakeを使用することをお勧めする。
Qt 6はQt 5との下位互換性を保つように努めているが、公式の移行ガイドを読んで、既存のプログラムを移行するために必要な変更の範囲を理解することをお勧めする。