Qt 6.4 の新機能

Qt 6.4 の新しいモジュールと復活したモジュール

Qt 6.4 では以下のモジュールが追加されました:

  • Qt HTTP Server- Qt アプリケーションに HTTP サーバを組み込むためのモジュールです。このモジュールはテクニカルプレビューであり、API と ABI の安定性は保証されていません。
  • Qt Quick 3D Physics- Qt Quick 3D に物理シミュレーション機能を追加するハイレベル QML モジュールです。

Qt 6.4 では、Qt 5 からQt TextToSpeechモジュールを再導入しました。CMake ビルドシステムを使用し、Qt 6 で動作するようになりました。

各モジュールの変更点の詳細はQt 6 の Qt モジュールの変更点にあります。

Qt 6.4 の新機能

Qt コアモジュール

  • QLatin1String の別名としてQLatin1StringView を追加しました。これは、Latin-1 文字列ビューを参照する際に推奨される名前になりました。
  • QLatin1StringView(const char *, qsizetype)QLatin1StringView(const char *, const char *) のコンストラクタが非明示的になりました。
  • Qt::Literals::StringLiterals 名前空間に Latin-1 文字列および char リテラルを作成するためのリテラル演算子_L1 を追加しました。
  • Qt::Literals::StringLiterals 名前空間に、それぞれQStringQByteArray リテラルを作成するためのリテラル演算子_s_ba を追加した。_s_ba を使用するため、_qs_qba を非推奨とした。
  • QString::count()とQByteArray::count()は、同名のアルゴリズム・オーバーロードとの混同を避けるため、パラメータを取らない非推奨。これらはsize() またはlength() メソッドで置き換えることができます。
  • QStringEncoder Qt が ICU サポートを有効にしてビルドされた場合に、ICU がサポートするすべてのコーデックと をサポートするようになりました。QStringDecoder
  • Android と JNI 開発用のクラス、QJniObjectQJniEnvironment で、callMethodfindMethod と同様のメソッドにオーバーロードが追加されました。シグネチャ文字列を指定せずにJava関数を呼び出したり、ネイティブ・メソッドを登録したりできるようになりました。
  • 新しいテンプレート関数QJniObject::construct() は、型やシグニチャ文字列を指定することなく、C++ から Java クラスのインスタンス化を可能にします。
  • QByteArray インスタンスで fromPercentEncoding() 静的メソッドを呼び出す代わりに、 percentDecoded() インスタンス・メソッドが追加されました。
  • QTextStream char16_t の入出力がサポートされました。
  • QStringView localeAwareCompare() メソッドが追加され、指定した部分文字列の出現回数を count() できるようになりました。
  • QDate 利用可能な場合は、様々な std::chrono 年月日構造型から構築できるようになり、利用可能な場合は、std::chrono::days を取る addDuration() を持つようになりました。
  • QDateTime 同様に、addDuration(std::chrono::milliseconds)が追加され、同じ型の加算や減算の演算、 の差分値が返され、時間の瞬間を記述する様々な std::chrono 型を取る静的な擬似コンストラクタがいくつか追加されました。QDateTime
  • QTimeZone::fromStdTimeZonePtr(const std::chrono::time_zone *) を追加しました。
  • QCalendar名前によるコンストラクタがQAnyStringView を受け付けるようになりました。

Qt GUIモジュール

Qt Quick モジュール

  • TableView にいくつかの新しいプロパティと関数が追加され、キーボードナビゲーションと選択、行選択と列選択、アニメーション、サブセルの位置決めなどのサポートが改善されました。
  • TreeView 選択範囲をサポートするようになり、ツリー内のノードを再帰的に展開したり折りたたんだりするための、より広範なAPIが追加されました。
  • QQuickWidget OpenGLに加えて、サポートされているすべての3DグラフィックスAPI(Vulkan、Metal、Direct3D 11)で機能するようになりました。 を使用する場合、アプリケーションは OpenGL でのレンダリングを強制する必要がなくなりました。QQuickWidget
  • カスタムマテリアルで使用されるシェーダーで、結合されたイメージサンプラーの配列のサポートが追加されました。これは、新しい関数QSGMaterialShader::combinedImageSamplerCount() と、QSGMaterialShader::updateSampledImage() の既存の引数texture の拡張セマンティクスによってサポートされます。
  • QSGMaterialShader::GraphicsPipelineState で、ポリゴンのラスタライズモードをsolid からline に変更できるようになりました。
  • ShaderEffectSource.format と は以前の Qt 6 リリースでは役に立たず、レガシーな値は実際には無視されていました。特に、RGBA8の代わりに浮動小数点(FP16またはFP32)テクスチャを要求できるようになりました。layer.format
  • QQuickRenderTarget::fromPaintDevice() を追加し、software バックエンドを使用してQQuickWindow からの出力をリダイレクトできるようにしました。
  • QQuickRenderTarget にオーバーロードを追加し、テクスチャやイメージオブジェクトのネイティブフォーマットを指定できるようにしました。これは、RGBA8ではないネイティブ・テクスチャを扱う必要がある、いくつかの高度なユースケースに関連します。Qt のレンダリングインフラストラクチャでサポートされているネイティブフォーマットのみが受け入れられることに注意してください。
  • QQuickRenderTargetsetMirrorVertically() が追加され、3D API ベースのレンダリングをテクスチャにリダイレクトするときに、Qt Quick レンダラーに行列を変更して垂直方向に反転した結果を得るように要求できるようになりました。
  • Qt Quick ウィンドウは、プライマリグラフィックスデバイスが Qt と互換性がない場合、環境変数を手動で設定することなく、Direct 3D (WARP) のソフトウェアラスタライズプラットフォームの使用を試みるようになりました。
  • Qt Quick scenegraph のthreaded レンダリングループに、壊れた vsync ベースのスロットリングを認識するための簡単なヒューリスティックを追加しました。レンダリングスレッドをブロックすることなく、フレームのレンダリング/表示が速すぎる場合、アニメーションを実行する通常のタイマーベースのアプローチに自動的に切り替わり、QML アニメーションの速すぎる実行を防ぐようになりました。
  • カスタムアニメーション用にFrameAnimation が追加されました。アニメーションフレームと同期してカスタムスクリプトを実行できるようになりました。

Qt Quick Controls モジュール

  • Tech Preview として、iOS 用の新しいネイティブスタイルのiOS Style を追加しました。
  • TreeViewDelegate TreeView に、カレント、セレクテッド、ハイライトの3つのプロパティを追加した。

Qt Quick Dialogs モジュール

  • ColorDialog を追加しました。これは、サポートしているプラットフォームではネイティブダイアログ、その他のプラットフォームでは非ネイティブのQt Quickダイアログです。

    非ネイティブダイアログはすべての非ネイティブスタイルをサポートしています:Basic、Fusion、Imagine、Material、Universalです。

Qt ウィジェットモジュール

  • QFormLayout 新しい () と () メンバ関数が追加され、インデックス、入力ウィジェット、行のレイアウトによって行を隠したり表示したりできるオーバーロードが追加されました。isRowVisible setRowVisible
  • QKeySequenceEdit 新しい プロパティが追加されました。このプロパティを使用して、ユーザーが編集をクリアできるクリアボタンをウィジェットに表示するかどうかを制御します。clearButtonEnabled
  • QWizard 新しいスロット、 は、アプリケーションが現在のページとターゲットの間のページを訪問することなく、ページに移動することを可能にします。setCurrentId

Qt ネットワークモジュール

  • QSslServer が追加されました。これにより、TLSのみで通信するサーバーの作成が簡単になりました。
  • QNetworkInformation loadBackendByFeatures(Features) と loadBackendByName( ) が追加されました。これは、対応するオーバーロードされた load(Features/ ) 関数に取って代わるものです。QStringViewQStringView

Qt Test モジュール

  • QTestEventLoop::enterLoopMSecs() は、タイムアウトが 1 秒未満の場合に PreciseTimer を使用するようになりました。
  • カスタムの QTest::compare() 実装は、QTest::compare_helper() の呼び出しを、非推奨となった古いオーバーロードではなく、新しい 2 つのオーバーロードのいずれかを使用するように修正する必要があります(チェックが実際に失敗した場合にのみ、失敗レポートの値を表す文字列を生成するため)。
  • QAbstractItemModelTester::setUseFetchMore() を追加した。
  • 新しいマクロ QCOMPARE_{EQ,NE,GT,GE,LT,LE}()は、QCOMPARE()と同様のレポートによる比較をサポートします。EQの方は、QCOMPARE()のカスタマイズなしで、正確な比較を行います。これらには、通常の QTRY_COMPARE_*() と QTRY_COMPARE_*_WITH_TIMEOUT() が付属しています。

Qt QMLモジュール

  • QML言語
    • カスタム値型を名前で登録できるようになりました。つまり、QML_VALUE_TYPE の引数は無視されなくなりました。小文字でなければなりません。一度登録すれば、QMLで独自の値型のプロパティを宣言することができます。
    • QMLでは、どんな名前の値型でもリストに格納できるようになりました。例えばQMLのlist<rect>はC++のQList<QRectF>のようなものです。これにより、このようなプロパティにvarを使ったり、その要素をオブジェクトにラップしたりする必要がなくなりました。
    • 新しく追加されたプラグマ ComponentBehavior では、QMLファイルで定義されたコン ポーネントを、その作成時のコンテキスト以外で使用できるかどうかを指定する ことができます。そうでない場合(pragma ComponentBehavior: Bound)、Qt Quick Compiler はコードを最適化することができます。
  • QML タイプコンパイラ (qmltc)
    • QML言語カバレッジの拡張
  • QML スクリプトコンパイラ (qmlsc, qmlcachegen)
    • 値型のリストに対する様々な操作が C++ にコンパイルされるようになりました。
    • デッドコードやデッドストアがより積極的に最適化されるようになりました。
    • 型変換は、値が読み込まれる場所ではなく、値が書き込まれる場所で行われるようになりました。値が複数回読み込まれる場合、この方が高速です。
  • QML リンター (qmllint)
    • QtQuickQtQuick.Controls の適切な使用に関する新しい警告を追加。
  • QML Language Server (qmlls)
    • 補完のサポートを追加
    • いくつかのリンターの警告/ヒントに対するコードアクションの修正を追加
    • 実行ファイルを libexec に移動
  • CMakeのAPIをクリーンアップ

Qt Quick 3D モジュール

  • ライトマップベイクサポートのプレビューを追加しました。これは、レイトレーシングを使用して事前に生成されたライトマップによる静的グローバルイルミネーションソリューションを提供します。詳細はライトマップとグローバルイルミネーションを参照してください。
  • メタルネス/ラフネスの代わりにスペキュラ/グロッシー ワークフローを使用できるように、SpecularGlossyMaterial を追加しました。
  • ライン状のスプライトパーティクルを作成できるLineParticle3D タイプを追加。
  • モデルが反射プローブによってレンダリングされるかどうか、また反射で見えるかどうかを制御するModel.castsReflection プロパティを追加。同じプロパティはsprite particles にも導入されています。
  • ReflectionProbe.boxOffset プロパティを追加し、キャプチャポイントの位置に影響を与えることなく、プローブの位置に対してボックスを移動できるようにしました。
  • プローブボックスを視覚化する立方体を表示するためのReflectionProbe.debugView プロパティを追加しました。
  • 画像ファイルから高さフィールドジオメトリを作成できるように、HeightFieldGeometry を追加。
  • CubeMapTexture を追加し、シェーダーでキューブ マップ テクスチャを使用するカスタム マテリアルとポスト処理エフェクトを有効にしました。入力は、6面すべての画像データを含む.ktx コンテナか、6つの個別の画像ファイルです。
  • ライトプローブの代わりにキューブマップからスカイボックスをレンダリングするためのサポートを追加しました。これは、背景モードSceneEnvironment.SkyBoxCubeMap を設定することで要求できます。
  • HDR ライトプローブまたはスカイボックスのテクスチャをプロシージャ ルに生成するためのProceduralSkyTextureData を追加しました。
  • ポイントライトとスポットライトのシャドウレンダリングを改善。
  • View3DrenderFormat プロパティを追加し、View3D が (デフォルトの) Offscreen レンダー モードを使用しているときに、バッキング テクスチャ フォーマットを指定できるようにしました。使用可能な値はShaderEffectSource.format と同じです(これ自体も 6.4 で改訂されています)。これにより、デフォルトの RGBA8 の代わりに浮動小数点テクスチャを使用できるようになりました。
  • UIP ファイルのインポートのサポートが削除されました。古い Qt 3D Studio の機能から Qt Quick 3D へのマッピングは、以前のリリースですでに問題がありました。そのため、Qt 6.4 ではbalsam ツールから.uip ファイルのサポートを削除しました。

Qt 接続モジュール

  • QNdefMessage はエクスポートされなくなりました。このクラスは を継承していますが、 はエクスポートされたクラスに継承されるようには設計されていません。QList QList

    警告: これは後方互換性がありませんが、将来的なBCの破損を防ぐことができます。

  • Qt Bluetooth では、さまざまなエラー列挙型が、パーミッションが見つからないエラーを表す新しいエラーコードで拡張されています。現在、これらのコードは Android と macOS/iOS で使用されています。例としてQBluetoothLocalDevice::MissingPermissionsError を参照してください。

Qt WebEngine モジュール

プラットフォームの変更

WebAssembly

Qt は WebAssembly プラットフォームで完全にサポートされるようになりました。詳しくはQt for WebAssemblyのプラットフォームのドキュメントをご覧ください。

モバイルプラットフォーム

アンドロイド

  • Gradle を 7.4.2 に、Android Gradle Plugin を 7.2.1 に更新しました。
  • NDK を r23b (23.1.7779620) に更新。
  • CMake 変数QT_ANDROID_SIGN_APKおよびQT_ANDROID_SIGN_AABを追加し、CMake から署名付きパッケージを直接ビルドできるようにした。
  • Android アクセシビリティがスクロールイベントを認識するようになりました。
  • Android アプリのアセット読み込み速度を改善。

組み込みプラットフォーム

Qt への起動

  • Boot to Qt スタックが更新され、Yocto 4.0.3 (kirkstone) を使用するようになりました。
  • NXP i.MX8M Plus LPDDR4 EVK が新しいリファレンスデバイスとして追加されました。

QNX

WebOS

  • Qt 6.4 が LG webOS OSE 2.18.0(Qt for webOS) で動作することが確認されました。

API の変更一覧

これらのページでは、Qt 6.4 における API の変更点の概要を説明します:

©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権はそれぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。