Qt 6.5 の新機能
Qt 6.5 の新しいモジュールと復活したモジュール
Qt 6.5 では以下のモジュールとツールが追加されました:
- Qt Quick Effect Maker- Qt Quick 用の高性能なシェーダーエフェクトを作成するツールです。
- Qt Quick Effects Item- Qt Quick Effect Maker - Qt Quick 用の高性能なシェーダーエフェクトを作成するツール を含むモジュールです。MultiEffect
- Qt Quick 3D Physics- Qt Quick 3D 用の物理エンジンです。このモジュールのテクニカルプレビューは終了しています。
- Qt Qml Core- 様々なQt CoreAPI を QML に公開するモジュールです。
テクニカルプレビューの新しいモジュールと復活したモジュール
注意: API と ABI の安定性は保証されていません。
- Qt Location のMap は、2D マップを Qt Quick アプリケーションにレンダリングします。MapView には、典型的なインタラクティブ機能(ズーム、パン、チルト)を実装するためのQt Quick Input Handlers が含まれています。
- Qt GRPCは、protobuf .proto-specifications のサービス記述に基づいて生成されたクラスを使用して、gRPC サービスとの通信をサポートします。
- Qt Protobuf はprotobuf .proto-specifications から Qt ベースのクラスの生成、シリアライズ、デシリアライズをサポートします。
Qt 6.5 の新機能
Qt コアモジュール
- QTimeZone Qt 6.5 Qt コアモジュールでは、 または とオフセットを取っていた と の様々な API を統一する軽量な時間表現で、 と、関連する場合はオフセットをパッケージ化できるようになりました。QTimeZone Qt::TimeSpec QDateTime QDate Qt::TimeSpec
- アプリケーションのパーミッションAPIを導入し、使用前にユーザーの同意が必要な機能のパーミッションをアプリケーションで確認または要求できるようにした。
- Common Trace Format (CTF)の新しいクロスプラットフォームのトレースバックエンド。
- QBindable NOTIFYシグナルを持つ任意のプロパティから構築できるようになりました。これにより、既存のバインドできないプロパティをバインドできるプロパティと統合できます。
- qt_generate_deploy_app_scriptCMake 関数が OUTPUT_SCRIPT という引数を受け付けるようになりました。古い FILENAME_VARIABLE を渡すことは非推奨です。
Qt GUIモジュール
- Windows、macOS、iOS でプラットフォーム固有のフォーマットでドラッグ&ドロップとクリップボードデータを処理するためのクラスQWindowsMimeConverter とQUtiMimeConverter を再導入しました。
- QVulkanInstance Vulkan Portability 物理デバイスをデフォルトで有効にしました。これは、Appleプラットフォーム上の新しいMoltenVKバージョンで動作するために必要です。これをオプトアウトできるNoPortabilityDriversフラグを追加しました。
- Vulkanレンダリングインフラストラクチャが、非推奨のVK_EXT_debug_reportとVK_EXT_debug_markerの代わりにVK_EXT_debug_utilsを使用するようになりました。
- QTextLayout::glyphRuns() が要求されたときに、各グリフに対応する文字列インデックスを返せるようになりました。新しい関数QGlyphRun::stringIndexes() から利用できるようになりました。
- チェックボックスのリスト項目が、変換を含め、MarkdownだけでなくHTMLでも読み書きできるようになりました。
- QGuiApplication::setBadgeNumber() を追加し、未読メッセージの数などをユーザーにフィードバックできるようにしました。バッジは macOS の Dock、iOS のホーム画面のアイコン、Windows のタスクバーにあるアプリケーションのアイコンに重ねて表示されます。
Qt Quick モジュール
- TableView 編集デリゲートを使用したセルの編集をサポートした。
- TableView マウスを使って行や列のサイズを変更できるようになった。
- TableView 行や列のサイズを明示的に設定できるようになった。
- TableView 新しいシグナル を追加しました。このシグナルは、例えば、オーバーレイ項目の位置を変更するために使用できます。
layoutChanged()
- TableView 複数選択をサポートした。
- QSGMaterial で、RGB とアルファのブレンド係数を別々に指定できるようになりました。
- Qt Quick scenegraph は、プラットフォームと使用中の 3D グラフィックス API に応じて、グラフィックスパイプラインまたは中間フォーマットのシェーダー バイトコードの永続的なディスクベースのキャッシュを自動的に使用するようになりました。これにより、アプリケーションの後続の実行において、グラフィックス・パイプラインの作成に費やす時間が短縮されることが期待されます。さらに、QQuickGraphicsConfiguration は、このデータが書き出され、どこからロードされるかを明示的に制御します。これにより、シード済みのキャッシュ・ファイルをアプリケーションやデバイスと一緒に出荷するといった高度な使用例が可能になり、初回起動も高速化される。
- PinchHandler グループ化された新しい と プロパティがあり、すべてのハンドラ軸グループに新しく追加された プロパティを含む、いくつかの新しい値を提供しています。また、 がすでに持っていた と プロパティも追加されました。scaleAxis rotationAxis
activeValue
DragHandler activeTranslation persistentTranslation - DragHandler
xAxis
と には、新しい プロパティがあります。yAxis
activeValue - PinchHandler'のactiveScale (以前は
scale
と呼ばれていた)は、minimumScale とmaximumScale の間の範囲に制限されなくなった:これらの制限は、persistentScale にのみ適用される。同様に、activeRotation (以前はrotation
)は、minimumRotation とmaximumRotation の間の範囲に制限されなくなりました。これらの制限は、タッチスクリーンの場合と同様に、ネイティブのタッチパッドのピンチジェスチャに適用されます。 - TapHandler::exclusiveSignals singleTapped と の信号を排他的にできるようになりました。doubleTapped
Qt Labs Animation モジュール
- BoundaryRule に シグナルが追加されました。returnedToBounds
Qt Quick Controls モジュール
- TreeViewDelegate ツリーノードの編集をサポートしました。
- Material スタイルがMaterial 3 に更新されました。
- いくつかのコントロールのビジュアルが更新されました:
- 新しい API が追加されました:
- Material.containerStyleは、ターゲットコントロールが使用するコンテナのスタイルを制御します。Material.containerStyle は、ターゲットコントロールが使用するコンテナのスタイルを制御します。これは、任意のウィンドウまたはアイテムにアタッチできますが、デフォルトでサポートしているのはTextField とTextArea のみです。
- Material.roundedScaleは、ターゲットコントロールで使用される角丸の半径を制御します。任意のウィンドウまたはアイテムにアタッチできますが、以下のコントロールのみがデフォルトでサポートしています:
- iOSスタイルが完成しました
- 6.5のiOSスタイルで実装された新しいコントロールは以下の通りです:
Qt Test モジュール
- テストが失敗またはスキップされた場合に真を返すQTest::currentTestResolved() を追加しました。これは、QTest::currentTestFailed() を、ヘルパー関数からの戻り値のテスト条件として置き換えることができます。
- QTest::mouseReleaseイベント間の中間状態をチェックする必要がある場合に備えて、現実的なタイムスタンプ遅延を指定することで、ダブルクリックのテストに () とmouseClick() を使用できるようになりました。mouseDClickそうでない場合は、() の方が便利です。
Qt Widgets モジュール
- QKeySequenceEdit maximumSequenceLength は、アプリケーションがキー・シーケンスの長さを制御できるようにしました。 は、記録を終了するキーの組み合わせを定義します。finishingKeyCombinations
- QOpenGLWidget にステレオスコピック・レンダリングのサポートが追加され、QOpenGLWidget ビューポートに支えられたQGraphicsView にも適用できるようになりました。QOpenGLWindow や、Qt 5 と 4 の QGLWidget とは異なり、QOpenGLWidget は、サポートする API を用意して明示的なサポートが必要です。この場合、アプリケーションはネイティブウィンドウに直接レンダリングしないため、QOpenGLWindow のようにアクティブな描画バッファを制御できません。
Qt ポジショニングモジュール
- QGeoSatelliteInfoSource の QML API であるSatelliteSource が導入されました。
Qt シリアルバスモジュール
- QCanSignalDescription,QCanMessageDescription,QCanUniqueIdDescription クラスを導入。これらのクラスは、CAN バスメッセージをエンコードまたはデコードするためのルールセットを提供するために使用されます。
- QCanFrameProcessor クラスを導入。このクラスは、受信したQCanBusFrame をキーと値のペアのマップにデコードし、キーと値のペアのマップからQCanBusFrame を構成するために使用できます。
- QCanDbcFileParser クラスを導入。このクラスは、DBC ファイルを解析してメッセージ記述を生成するために使用され、後にQCanFrameProcessor で使用できる。
新しいクラスはすべて実験的なもので、変更される可能性があります。
Qt ネットワークモジュール
- QHttp1Configuration で導入されました。このクラスを使用して、HTTP 1 を使用する際にホストごとに使用される最大接続数を設定できます(デフォルト:6)。
- QNetworkRequest Qt for WebAssembly で UseCredentialsAttribute 属性が追加され、 の withCredentials が有効になりました。XMLHttpRequest
Qt QML モジュール
- QQmlApplicationEngine とQQmlComponent に、モジュール URI と型名を使って QML 要素をロード/作成する API を追加しました。URLベースの関数とは対照的に、これはC++型やインラインコンポーネントでも動作します。
- QQmlListProperty プロパティの振る舞いがより配列に近くなり、map()、reduce()、forEach()などのメソッドがサポートされるようになりました。 <int>のような他のシーケンス型も同様です。QList
- qmltcを拡張し、特に翻訳バインディング、インラインコンポーネント、 シングルトン、C++で定義されたシグナルのシグナルハンドラなど、 より多くのqmlの構成要素をサポートしました。
- QMLスクリプトコンパイラは、追加されたコンストラクトを扱うことができます。特に
- console.log()とその仲間
let
とconst
- qsTr()とその仲間たち
- 文字列のarg()
- ビット演算子およびシフト演算子
- 指数演算子
- 新しい環境変数
QML_DISK_CACHE
を使ってQML Disk Cache をより細かく制御できるようになりました。 - 新しいパブリック CMake API を追加しました:
- Qt CMake ポリシーを導入し、リソースプレフィックスのデフォルトを改善しました。QTP0001ポリシーを
NEW
に設定すると、QML エンジンは常にリソースファイルシステムから QML モジュールを見つけることができます。
- Qt CMake ポリシーを導入し、リソースプレフィックスのデフォルトを改善しました。QTP0001ポリシーを
- qt_generate_deploy_qml_app_scriptCMake関数は、OUTPUT_SCRIPTという引数を受け付けるようになりました。古い FILENAME_VARIABLE を渡すことは非推奨です。
Qt Quick 3D モジュール
- モデルの自動詳細レベル(LOD)サポートを追加しました。これにより、アセットのインポート時にメッシュの簡易版を生成し、レンダリング時に適切なレベルを自動的に選択できるようになりました。
- カメラ距離に基づいてモデルの不透明度を制御する、明示的な詳細レベル (LOD) サポートを追加。
- ExtendedSceneEnvironment 、被写界深度、カラーグレーディング、グロー、ビネット、レンズフレアなどのエフェクトを内蔵。これらのエフェクトは一緒に実行されるため、個々 の独立したポスト処理エフェクトに比べて効率が向上し、そ れぞれが 1 回以上のレンダーパスを必要とします。
- レンダリング統計、アクティブなメッシュとテクスチャ アセットのリスト、ライブ レンダー パス情報、およびワイヤフレームモードやDebugSettings からのマテリアルのオーバーライドなどの設定をインタラクティブに切り替えるコントロールが、DebugView で強化されました。
- SceneEnvironment を介して利用可能なDebugSettings を追加。ワイヤフレームモードや物理ベースのマテリアルの特定の側面のみをレンダリングするためのマテリアルオーバーライドなどの設定をプログラムで制御できるようになりました。
- InfiniteGrid を追加。フェードアウトによる水平面の無限グリッドを実装。
- SceneEnvironmentビルトインのシンプルなフォグサポートを追加しました。有効にすると、シーン内のモデルのレンダリング時に深度または高さのフォグ効果が適用されます。
- インスタンス化されたレンダリングが使用される場合のピッキングを改善しました。
- PrincipledMaterial 、頂点カラーのサポートを追加しました。SpecularGlossyMaterial
- 反射プローブ(Reflection probe):シーンをレンダリングする代わ りに、提供されたキューブマップテクスチャを使用するサポートを追加 しました。
- 実行時のシェーダーソースファイル URI の変更に適切に対応するよう、ポストプロセッシングエフェクトが強化されました。
- ランタイムに生成されるマテリアルシェーダデータの永続的な ディスクベースのキャッシュを追加しました。これにより、アプリケーションの起動時間とビューの変更時間が改善される見込みです。
Qt WebView モジュール
- WebView の一般的な機能の一部を設定するためのWebViewSettings を追加しました。
Qt Multimedia モジュール
- ffmpeg メディアバックエンドは、6.4 ではテクニカルプレビューでしたが、Yocto ディストリビューションを除く macOS、Windows、Android、Linux ではデフォルトになりました。ネイティブ・バックエンドは、限定的なサポートでまだ利用可能です。
- 新しいタイプのビデオ入力であるQScreenCapture クラスを導入。QScreenCapture からQMediaCaptureSession を経由して、QMediaRecorder やQVideoWidget などの出力に直接ビデオを送ることができる。スクリーンキャプチャ機能は、ffmpeg メディアバックエンドでのみ利用可能。
プラットフォームの変更
WebAssembly
- Qt オンラインインストーラにマルチスレッドを有効にしたバイナリパッケージを追加しました。
- ファイルシステムアクセスAPI のサポートを追加しました。QFileDialog::getOpenFileContent() やQFileDialog::saveFileContent() のようなファイルダイアログ呼び出しは、ブラウザでサポートされている場合、この API を使用するようになりました。
- Local Font AccessAPI のサポートを追加しました。Qt はこの API をサポートしているブラウザでローカルフォントを使用するようになりました。
- Qt Multimedia にビデオ再生とカメラサポートの技術プレビューを追加しました。
- WebAssembly SIMD 用の configure オプションを追加しました: -feature-wasm-simd128
- WebAssembly の例外に関する設定オプションを追加した:-feature-wasm-exceptions
- Qt Web Utilsにユーティリティ関数と Qt on Web の使用例を追加しました。
- QTest WebAssembly 用に emrun をデフォルトで使うようにした。WebAssembly に特化したスクリプトが、自動テストの実行を行います。
デスクトッププラットフォーム
Windows
- 環境変数 QT_WIN_DEBUG_CONSOLE を設定することで、コマンドラインから起動した GUI アプリケーションの標準出力/標準エラーメッセージをコンソールウィンドウで見ることができます。
new
またはattach
に設定してください。
macOS
- QMessageBox およびQErrorMessage 用のネイティブ・バックエンドを追加。
LinuxのWaylandクライアント
- クライアントに分数のスケールファクターを提案するコンポジター用に、fractional_scale_v1 プロトコルをサポートしました。
モバイルプラットフォーム
アンドロイド
- Gradleを8.0に、Android Gradle Plugin (AGP)を7.4.1に更新(JDK 11以上が必要)。
- NDKをr25b(25.1.8937393)に更新しました。
- サポートされるバージョンのリストが Android 8.0 (API 26) 以降になりました。
- 最小プラットフォームビルド sdk バージョンを 33 (QT_ANDROID_API_VERSION) にバンプ。
- Qt file/dir 機能でコンテンツスキーム URI の操作をより多くサポートしました。
- Android Scoped Storage のQStandardPaths に関する修正とドキュメントの更新。
- Qt JNI の例外を Android システムではなく Qt から出力するようにしました。
- APK Signature Scheme v2 のサポートを修正しました。
iOS
- QColorDialog とQFontDialog のネイティブ実装を追加。
組み込みプラットフォーム
Qt への起動
- Boot to Qt スタックが yocto 4.1.2 (langdale) を使うように更新された。
- Dockerベースのツールチェーンを使用するmacOSホストをサポート。
- ターゲットハードウェアのサポートレベルが更新され、特定のハードウェアと OS の組み合わせに適用される複数のサポートレベルが存在するようになりました。
API変更のリスト
これらのページでは、Qt 6.5 における API の変更点の概要を説明します:
©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権はそれぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。