Qt 6.9 リリース

本稿は「Qt 6.9 Released」の抄訳です。
 

Qt 6.9がリリースされました。アプリケーションおよびデバイス開発者向けの新しい機能と機能強化が追加されています! 主な機能としては、Qt 6.9にアップグレードすると、既存のアプリケーションで絵文字のレンダリングが最新標準にアップグレードされ、Qt Quick 3Dで順序に依存しない透明度(OIT) が実現し、最新のOAuth2要件に対応するための大幅な機能強化が施され、すべてのプラットフォームとデバイスにわたっていくつかの新しいパフォーマンス機能が追加されます。

これ以外にも、APIの追加と全体的な新機能により、柔軟性と生産性が向上します。

ハイライトは以下の動画でご確認ください。

Qt Graphsでより多くの可視化

3Dグラフのレンダリングは、Surface3Dの透過性サポート、3DスプラインでデータをレンダリングするQSpline3DSeries、チャート、軸、ラベルのカスタマイズオプションの追加により、より強力になりました。Qt Quick 3DからView3Dにグラフを挿入することが容易になり、3Dコンテキストでのデータの表現力豊かな可視化が可能になりました。

2Dチャートでの入力処理は簡単にカスタマイズできるようになりました。また、QGraphsViewは、グラフがレンダリングされる矩形の位置を詳細に指定するためのplotAreaで構成することができます。

3D Surface graph using order-independent transparency

Qt Graphsの改善点については、Owais氏のブログ記事 What's New in Qt Graphs 6.9 をご覧ください。(和訳「Qt Graphs 6.9の新機能」)

改善された絵文字の処理

絵文字は世界で最も人気のある文字体系のひとつであり、進化を続ける分野でもあります。Qt 5.2 でカラーフォントのサポートを追加以来、いくつかの出来事がありましたが、Qt 6.9 で追いつくことができました。

Qt は現在、テキスト内の絵文字シーケンスを検出し、Unicode 仕様書に従って必要に応じて正しいカラーフォントを使用します。アプリケーション開発者はこのプロセスを制御できます。解析を無効にしたり、Qtをソースからビルドする際に絵文字セグメンテーションを完全に除外したり、QFontDatabaseに絵文字用の特定のフォントファミリーを選択する新しいAPIを追加したりすることができます。絵文字でサポートされるフォント形式には、CBDTとCOLRv1が含まれます。これらは、プラットフォームを問わず高品質でスケーラブルなレンダリングを提供します。

Eskilのブログ投稿 Emoji in Qt 6.9 (和訳はこちら)では、絵文字の歴史とQt 6.9のサポートについて詳しく紹介しています。

拡大クライアント領域とセーフ領域

デスクトップおよびモバイルにおける最新のアプリケーション設計では、コンテンツが中心になり、アプリケーションやシステムのUI要素がコンテンツにシームレスに融合し、邪魔にならないことが主流となっています。Qt 6.9では、Qt.ExpandedClientAreaHintウィンドウフラグとQt QuickのSafeAreaアタッチドプロパティを使用して、このユースケースをサポートする新しいAPIを導入しました。これらのAPIを併用することで、重要なシステムUI要素を維持しながら、アプリケーションコンテンツをウィンドウ全体または画面の端から端までを占めることができます。

Picture of a dog, filling the entire window including the title bar and frame.

この新機能に関する追加情報については、Tor Arneのブログ記事 (和訳) をご覧ください。

SVG CSS アニメーション

Qt の SVG サポートに、色、塗りつぶし、線、変形の各プロパティに対する CSS アニメーションの最初の実装が追加されました。これは、SVG を一連のピクセルマップにラスタライズする際に Qt SVG モジュールでサポートされており、Qt 6.8 で導入された VectorImage 要素でもサポートされています。VectorImage により、アニメーション化された SVG を Qt Quick シーングラフに直接レンダリングできるようになりました。

Animated stack of rounded rectangles

ブラウザで描画

Qtで描画

パフォーマンス機能

Qt のリリースごとに、すべてのプラットフォームとデバイスでパフォーマンスの高いアプリケーションを構築しやすくすることに重点を置いています。これには、コードの改善だけでなく、プラットフォームやグラフィックサブシステムから利用可能になった新機能のサポート追加も含まれます。

多くの最新の CPU アーキテクチャには、パフォーマンスコアと効率コアの両方が含まれており、QThread では現在、作業を実行する CPU コアの種類を優先設定できるようになりました。

OpenGLプラットフォーム上でQQuickPaintedItemを使用しているユーザーは、再びFramebufferObjectをレンダリングモードとして使用できるようになり、ハードウェアアクセラレーションによる命令型描画のメリットを得ることができます。

OpenGL ES RHIバックエンドは、利用可能な場合はマルチサンプルレンダリング拡張を使用するようになり、最新のGPUアーキテクチャ上でのQt QuickおよびQt Quick 3D HMIのレンダリングパフォーマンスが向上しました。

Windowsでは、Direct 3D RHIバックエンドが専用vblankウォッチャースレッドを通じて更新を実行し、CPU負荷とレイテンシを低減します。これにより、マウスやタッチによるアイテムのドラッグなど、インタラクティブなUIのレスポンスが大幅に向上します。

OpenGL以外のRHIバックエンドでは、当社のRHI抽象化機能が可変レートシェーディングをサポートするようになりました。これにより、visionOS上のQt Quick 3D XRで動的なフォーベイションのサポートが可能になります。

Qt Quick用の新しい RectangularShadow 要素と、Qt Quick 3Dでのシャドウマップ境界の制御性の向上により、UI開発者はシャドウやグロー効果を最適化し、負荷の高い計算を回避できるようになりました。

Qtのアイテムビューを使用するWidgetアプリケーションでは、一度に多くのデータが変更されるモデルを使用する場合にパフォーマンスをチューニングでき、セクションのサイズ変更や並び替えが無効になっている場合のQHeaderViewのメモリ使用量が大幅に最適化されました。

順序に依存しない透明度

Qt Quick 3Dは、順序に依存しない透明度 (order independent transparency) をサポートするようになりました。これにより、レンダリング前に手動でジオメトリを深度別にソートすることなく、透明オブジェクトのレンダリングが可能になります。計算とRAMに若干のコストがかかりますが、特にオブジェクトが重なり合っている場合に、不適切なソートによる視覚的なエラーを排除することができます。この技術は、半透明のサーフェスグラフのレンダリング用にQt Graphsで既に使用されていますが、インスタンス化を含むあらゆるモデルで使用することができます。

Qt 6.9では、コスト、パフォーマンス、精度のバランスが取れた加重ブレンド手法をサポートしています。

強化された接続性

Qt 6.8、そして現在ではQt 6.9で、Qt Network Authorizationモジュールは、最新のOAuth2要件に対応するための大幅な機能強化を導入しました。特に、Device Authorization Grantのサポートが追加され、テレビやIoTデバイスなど、入力機能が限られているデバイスでのユーザー認証が容易になりました。さらに、OpenID ConnectのIDトークンを取得するための基本機能が導入され、アプリケーションがユーザーのID情報にアクセスできるようになりました。このモジュールでは、認証に代替ブラウザユーザーエージェント(Qt WebEngineの使用を含む)を使用できるようになり、より柔軟性が向上しました。トークン管理を改善するために、新しいシグナルがアクセストークンの有効期限が近づいたことを通知し、自動トークン更新を有効にすることができます。さらに、このモジュールでは、要求されたスコープと付与されたスコープを区別し、アプリケーションがユーザーから付与された権限に基づいて正確に動作を調整できるようにします。

Qt Network Authorizationの新機能に関する詳細は、Juha氏のブログ記事 (和訳) をご覧ください。

Qt HTTP Server は信頼された環境で実行するように提供されていますが、それでもなお、その強化に追加の労力を費やしました。 最大受信リクエスト数は、QHttpServerConfiguration 型で設定できるようになりました。これにより、サービス拒否攻撃、ブルートフォースハッキング、スクレイピングに対する保護が可能になります。 HTTP/2 クライアントは、QHttp2Configuration で同時ストリームの最大数を制御できます。

Qt Quick 開発者体験

Qt Quick を使用する開発者は、より優れたツールと新機能の恩恵を受けることができます。QML Language Server ではアウトラインビューが提供されるようになり、IDE やエディタで QML ドキュメントの構造を階層的に表示できるようになりました。これには、オブジェクト、プロパティ、メソッドが含まれます。

新しいContextMenuコンポーネントにより、開発者はコンテキストメニューをアイテムに簡単に追加できるようになりました。このコンテキストメニューは、右クリックなどのプラットフォーム固有のイベントで開きます。さらに、TextFieldとTextAreaは、カスタムメニューが指定されていない限り、デフォルトのコンテキストメニューを提供します。

最後に、OpenXRにMetalバックエンドが追加され、アプリケーションをmacOSのMeta XRシミュレータで実行できるようになりました。

Qt 6.9 にアップグレード

Qt 6.9 は、現行の Qt 6.8 LTS リリースに多くの改善と新機能を追加します。Qt 6.9 は、これまでのすべての Qt 6 リリースとバイナリおよびソースの互換性があります。ベータパッケージの広範なテストと、多くの方々からいただいたフィードバックにより、これらの改善を活用するために Qt 6.9 にアップグレードしてもシームレスに動作することを確信しています。新しいAPIの完全なリストについては、ドキュメントを参照してください。すべての貢献者に感謝いたします!Qtソースコードにパッチを適用したコミュニティメンバーの完全なリストは、リリースノートの最後に記載されています。

まだQt 5をお使いですか?

Qt 5.15 の標準商用サポートは、2025年5月26日をもって終了します。サポート期間終了後は、リリースは EoS (End of Support) 状態となり、Qt 5.15 の拡張セキュリティメンテナンス (ESM) などの追加サービスを通じてのみサポートされます。

Qt 5.15 標準サポート終了と ESM について、こちらでご覧ください。

Qt 6 をオンラインで試す

Qt 6 をブラウザ上で試すことができます。インストールは不要です。try.qt.io にアクセスして、さっそく試してみましょう!

Qt for Python 6.9

Python 用 Qt のアップデートをお探しですか?Qt for Python 6.9 も利用可能です!


Blog Topics:

Comments