このページの内容

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 TextToSpeech モジュールを再導入しました。このモジュールは Qt 6.3 には含まれていませんでした。現在は CMake ビルドシステムを使用しており、Qt 6 で動作します。

各モジュールの変更点の詳細については、「Qt 6におけるQtモジュールの変更点」をご覧ください。

Qt 6.4の新機能

Qt Core モジュール

  • `QLatin1String` の別名として `QLatin1StringView ` が追加されました。これが、Latin-1 文字列ビューを参照する際の推奨名となりました。
  • QLatin1StringView(const char *, qsizetype) およびQLatin1StringView(const char *, const char *) のコンストラクタは、明示的ではなくなりました。
  • Qt::Literals::StringLiterals 名前空間内で Latin-1 文字列および char リテラルを作成するためのリテラル演算子_L1 を追加しました。
  • Qt::Literals::StringLiterals 名前空間に、それぞれQString およびQByteArray リテラルを作成するためのリテラル演算子_s および_ba を追加しました。_qs および_qba は非推奨となり、代わりに_s および_ba が使用されます。
  • 同じ名前のアルゴリズムのオーバーロードとの混同を避けるため、引数を取らない `QString::count()` および `QByteArray::count()` を非推奨としました。これらは `size() ` または `length() ` メソッドで置き換えることができます。
  • QStringEncoder また、Qt を ICU サポートを有効にしてビルドした場合、QStringDecoder は ICU がサポートするすべてのコーデックに対応するようになりました。
  • AndroidおよびJNI開発用のクラスであるQJniObject およびQJniEnvironment には、callMethod 、findMethod 、および類似のメソッドに対するオーバーロードが追加されました。これにより、シグネチャ文字列を指定せずに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) が追加されたほか、同じ型を加算または減算する演算、QDateTime 値の差を返す関数、および特定の時点を表すさまざまな std::chrono 型を受け取るいくつかの静的疑似コンストラクタも追加されました。
  • QTimeZone::fromStdTimeZonePtr(const std::chrono::time_zone *) が追加されました。
  • QCalendarによる名前付きコンストラクタは、QAnyStringView を受け入れるようになりました。

Qt GUI モジュール

Qt Quick モジュール

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

Qt Quick Controls モジュール

  • iOS 向けに、ネイティブ風の新しいスタイル「iOS Style」をテクニカルプレビューとして追加しました。
  • TreeViewDelegate TreeView には、現在選択されているか、選択済みか、またはハイライトされているかを表す3つの新しいプロパティが追加されました。

Qt Quick ダイアログモジュール

  • ColorDialog が追加されました。これは、対応しているプラットフォームではネイティブのダイアログとして、その他のプラットフォームでは非ネイティブの「Qt Quick 」ダイアログとして動作します。

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

Qt Widgets モジュール

  • QFormLayout には、新しいisRowVisible()およびsetRowVisible()メンバー関数が追加されました。これらはオーバーロードされており、インデックス、入力ウィジェット、または行レイアウトに基づいて行の表示/非表示を切り替えることができます。
  • QKeySequenceEdit に新しいclearButtonEnabled プロパティが追加されました。これを使用して、ユーザーが編集内容をクリアできる「クリア」ボタンをウィジェットに表示するかどうかを制御します。
  • QWizard 新しいスロットsetCurrentId が追加されました。これにより、アプリケーションは、現在のページと目的のページの間にあるページを経由せずに、目的のページに移動できるようになります。

Qt Network モジュール

  • QSslServer が追加されました。これにより、TLS 経由でのみ通信を行うサーバーの作成が簡素化されます。
  • QNetworkInformation loadBackendByFeatures(Features) および loadBackendByName(QStringView) が追加されました。これらは、現在非推奨とマークされている、対応するオーバーロードされた load(Features/QStringView) 関数を、将来的には置き換えることを意図しています。

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 を使用したり、その要素をオブジェクトにラップしたりする必要がなくなりました。
    • 新しい `pragma ComponentBehavior` を使用すると、QML ファイルで定義されたコンポーネントを、その作成コンテキストの外で使用できるかどうかを指定できます。使用できない場合(`pragma ComponentBehavior: Bound`)、Qt Quick コンパイラはコードをより効果的に最適化できます。
  • モジュールシステム
    • qmldir ファイル内の `import ` ディレクティブが強化され、デフォルトのインポートがサポートされるようになりました。これにより、モジュールは、オプションであるにもかかわらず、qmllint が当然のものとして扱うべきインポートを指定できるようになります。
  • QML タイプコンパイラ (qmltc)
    • QML言語の対応範囲を拡大しました
  • QMLスクリプトコンパイラ (qmlsc、qmlcachegen)
    • 値型リストに対するさまざまな操作が、C++にコンパイルされるようになりました。
    • デッドコードおよびデッドストアの最適化が、以前よりも積極的に行われるようになりました。
    • 型変換は、値が読み取られる場所ではなく、値が書き込まれる場所で行われるようになりました。値が複数回読み取られる場合、これにより処理が高速化されます。
  • QML リンター (qmllint)
    • qmllintにプラグインサポートが追加され、モジュール固有の診断や動作が可能になりました。
    • QtQuick の適切な使用に関する新しい警告が追加されました。QtQuick.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 が追加されました。
  • ポイントライトおよびスポットライトの影のレンダリングを改善しました。
  • `View3D `にrenderFormat プロパティを追加し、View3D が(デフォルトの)オフスクリーンレンダリングモードを使用している際に、バッキングテクスチャ形式を指定できるようにしました。利用可能な値はShaderEffectSource.format (これ自体も6.4で改訂されています)と同じです。これにより、デフォルトのRGBA8の代わりに浮動小数点テクスチャを使用できるようになります。
  • UIPファイルのインポート機能は削除されました。以前のリリースにおいても、旧Qt 3D Studioの機能とQt Quick 3Dとのマッピングには問題がありました。そのため、Qt 6.4ではbalsam ツールからの.uip ファイルのサポートが削除されました。

Qt Connectivity Module

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

    警告: これは 下位互換性はありませんが、これにより今後の下位互換性の破綻を防ぐことができます。

  • Qt Bluetooth では、各種エラー列挙型に、権限不足エラーを表す新しいエラーコードが追加されています。現在、これらのコードは Android および macOS/iOS で使用されています。例としてQBluetoothLocalDevice::MissingPermissionsError を参照してください。

Qt WebEngine モジュール

  • HTML5 ファイルシステムアクセス API が追加されました。これはQWebEngineFileSystemAccessRequest
  • QWebEngineLoadingInfo 特にHTTPエラー向けの改良されたエラーコードによって制御されます
  • QWebEngineView::setPage() が、すでに読み込まれているページでも動作するようになりました
  • QWebEngineSettings::NavigateOnDrop が追加され、URL のドラッグ&ドロップによるナビゲーションを無効にできるようになりました
  • QWebEngineUrlRequestInfo::ResourceTypeWebSocket WebSocket 接続をインターセプトできるように追加されました

プラットフォームの変更点

WebAssembly

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

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

Android

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

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

Boot to Qt

  • Boot to Qt stack が 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の変更点の概要が記載されています:

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.