Qt 6.7 の新機能

Qt 6.7 の新機能

Qt コアモジュール

  • C++20 std::span の Qt 再実装であるQSpan を追加。
  • std::*_ordering クラスの C++17 互換実装であるQt::strong_orderingQt::weak_orderingQt::partial_ordering クラスを追加。
  • Qt クラスに関係演算子を便利に実装するためのヘルパー・マクロを追加しました。これらのマクロは、C++20 ビルドでは operator<=>() を提供し、C++17 ビルドでは 6 つのすべての関係演算子にフォールバックします。
  • これらのヘルパー・マクロをQDate,QTime,QDateTime,QTimeZone,qfloat16 クラスに適用しました。
  • 新しいクラスQAtomicScopedValueRollback を追加した。
  • Qt::Key_micro を追加し、最終的に誤った名前の Key_mu を置き換えるようにした。これはマイクロ記号 U+00B5 であり、ギリシャ文字の mu、U+03BC や U+039C ではない。
  • QLocalename()、bcp47Name()、uiLanguages() で、呼び出し元が名前のタグの間に使用するセパレータを指定できるようになりました。
  • QLocale フォーマットされた日付のタイムゾーン部分を (できる限り) ローカライズするようになりました。
  • 2桁の年の日付(およびdatetime)解析で、呼び出し元がその年を選択するセンチュリーを制御できるようになりました。
  • QCalendar 2桁の年の解析をサポートする matchCenturyToWeekday() が追加されました。
  • QDateTime TransitionResolution パラメータを受け付けるようになり、タイムゾーン遷移の解決方法を制御できるようになりました。ギャップ内の datetime のデフォルトの解決方法が有効になりましたが、time() と date() が、要求されたものではなく、toMSecsSinceEpoch() が報告するものと一致するようになりました。

Qt Graphs モジュール

Qt Graphs3D

  • データAPIで、すべてのデータ項目をヒープメモリに作成する必要がなくなった。
  • 画像へのレンダリング機能を追加した。

Qt Graphs2D

  • 2D グラフの技術プレビュー。
  • 棒グラフ、折れ線グラフ、散布図を初期サポート。

Qt GRPC モジュール

  • QtGRPC 呼び出しとストリームの動作をカスタマイズするためにインターセプターを使用する機能が追加されました。QGrpcClientInterceptorをサブクラス化し、必要なインターセプトメソッドをオーバーライドできるようになりました。
  • QGrpcServerStreamQGrpcClientStream 、QGrpcBidirStreamクラスを導入しました。これらはそれぞれ、クライアント、サーバー、双方向ストリーミングの呼び出しに使用されます。

注意: Qt GRPC モジュールは技術プレビュー中です。

Qt GUI モジュール

  • Windows 10 と 11、macOS と iOS、Android のネイティブアイコンライブラリへのアクセスを提供するQIconEngine の実装を追加しました。
  • 新しいイベントタイプQEvent::ChildWindowAddedQEvent::ChildWindowRemoved を追加し、対応するQChildWindowEvent クラスで子ウィンドウの追加と削除をウィンドウに通知するようにしました。
  • すべてのプラットフォームで可変アプリケーション・フォントの読み込みを可能にしました(WindowsではDirectWriteまたはFreeTypeバックエンドが必要です)。
  • QFont variable fonts で動作する新しい API を追加。
  • 新しいQFont::Tag タイプは、新しい可変フォントサポート API と、Qt 6.6 で予備 API として導入され、現在は最終化されたsupport for typographical features で軸を指定するために使用できます。

Qt マルチメディアモジュール

  • FFmpeg マルチメディアバックエンドが Windows の FFmpeg と動的にリンクするようになりました。プリビルドの FFmpeg バイナリはオンラインインストーラで提供されます。FFmpeg バックエンドを使用する Windows アプリケーションは、windeployqt を使用してインストーラの一部として FFmpeg バイナリをバンドルする必要があります。
  • 新しいMediaPlayer::autoPlayVideo::autoPlay プロパティは、メディアソースが設定されたときに自動的に再生を開始するために使用できます。
  • QCameraDevice に新しいcorrectionAngle プロパティが追加されました。このプロパティは、カメラの物理的な回転をネイティブの向きと比較して補正するために必要な回転角度を表します。

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

  • HTTP ヘッダーを表すQHttpHeaders クラスを追加しました。
  • QNetworkRequestQNetworkAccessManager で転送タイムアウトを設定するための std::chrono サポートを追加。
  • QNetworkRequestFactory クラスを追加しました (Technical Preview)。このクラスはネットワークリクエストを作成するための便利なクラスです。
  • QRestAccessManager およびQRestReply を追加 (Technical Preview)。これらのクラスは、RESTfulなユースケース向けに調整された便利なラッパーです。

Qt OPC UA モジュール

Qt Protobufモジュール

  • QProtobufMessage ベースのクラス用の JSON シリアライズおよびデシリアライズ機能を実装する新しいシリアライザを追加しました。
  • Qt Protobufジェネレーターに「オプショナル」フィールドのサポートを追加しました。メッセージフィールドが「オプショナル」とマークされた場合、通常のフィールドに加えて clear<fieldName> メソッドと has<fieldName> メソッドが追加される。
  • Qt Protobuf ジェネレーターによって生成される列挙フィールドは、最初の文字の大文字と小文字を保持するようになりました。以前は、ジェネレーターは生成されるenumフィールド名を大文字にしていました。

注意: Qt Protobuf モジュールは技術プレビュー中です。

Qt QML モジュール

  • QML Language Server に新しい機能を追加しました: フォーマット、セマンティック、コードスニペットの補完、名前の変更、QT_QML_GENERATE_QMLLS_INI による CMake でのファイル生成の設定です。
  • QMLファイルの翻訳コンテキストは、QT_QML_GENERATE_QMLLS_INIで設定できます。pragma Translator
  • QML ファイルの翻訳コンテキストはQML_CONSTRUCTIBLE_VALUEQML_STRUCTURED_VALUE で設定できます。実際、Qt 6.5 からは既に可能でしたが、正式にサポートされました。

Qt クイックコンパイラ

  • 値型のプロパティを記述するバインディングや関数を C++ にコンパイルできるようになりました。
  • オプショナルチェインが C++ にコンパイルできるようになりました。
  • for...in iteration が C++ にコンパイルできるようになりました。

Qt Quick モジュール

  • ファイルから読み込むためのTextEdit.textDocument.source プロパティと、書き込むためのsave() とsaveAs() 関数が追加されました。これらは、テキストを扱うユースケースでXMLHttpRequest を置き換えるためのものです。
  • TextEditTextAreacursorSelection プロパティを追加し、選択したテキストのプロパティを検査および変更できるようにしました。
  • テキスト・エディターのサンプルを更新し、これらの機能を示すようにした。
  • 非常に大きなテキストのレンダリングでより良い結果をもたらす新しいテキスト・レンダラーを追加。これはrenderTypeText.CurveRendering に設定することで選択できます。
  • テキスト・クラスは、variable fonts で動作する新しい API を取得しました。
  • 矩形は異なるradii on each corner を持つことができるようになりました。
  • Qt Quick シーンに QWindows を埋め込むための予備的なサポートと、Window の parent プロパティを追加し、Window の視覚的な親を設定できるようにしました。
  • Control の focusReason とfocusPolicy プロパティはItem に移動されました。
  • QQuickFramebufferObject の現代的な代替としてQQuickRhiItem を追加しました。これにより、OpenGL、Vulkan、Direct3D、または Metal など、Qt のレンダリング ハードウェア インターフェイスでサポートされているハードウェア アクセラレーション グラフィックス API を介して 3D グラフィックスをレンダリングするカスタムQQuickItem オブジェクトを作成できるようになりました。
  • 新しい QQuickRenderControl サンプルを追加しました。このサンプルは QRhi を使用しているため、完全に移植可能で、サポートされているすべての 3D API で動作します。これは、クロスプラットフォームで Qt Quick コンテンツをテクスチャにリダイレクトする方法を示しています。

Qt Quick Controls モジュール

Qt Quick Shapes モジュール

  • Curve Rendererと関連プロパティpreferredRendererType が正式にサポートされ、実験的なものとは見なされなくなりました。
  • 形状を特徴付けるためのpathHints プロパティが追加されました。これは、パスの処理とレンダリングを最適化するためにレンダラーが使用する可能性があります。
  • シェイプは、シェイプの外接矩形に基づく暗黙のサイズを持つようになり、レイアウトで適切に配置されるようになりました。アイテムに暗黙的なサイズとは異なる明示的なサイズが与えられたときのシェイプの動作を変更するために、fillModehorizontalAlignmentverticalAlignment のプロパティが追加されました。
  • 技術プレビューとしてsvgtoqmlツールが追加されました。これはSVGファイルをQMLコードに変換するためのツールです。現在、実験的なものとみなされており、Qt SVG がサポートするもののサブセットをサポートしています。

Qt Quick Timeline モジュール

  • QtQuick.Timeline.BlendTrees サブモジュールは、複数のタイムラインアニメーションをブレンドするための新しい API を追加します。

Qt Quick 3D モジュール

  • QQuick3DRenderExtension はアプリケーション側のレンダリング拡張を実装するための新しいクラスで、QtQuick3D エンジンに変更を加えることなく、QtQuick3D のレンダリングパイプラインを拡張できるようになりました。 と Qt Rendering Hardware Interface ( ) によって提供される新しいセミパブリック API とともに、カスタムレンダリングコードを のレンダリングパイプラインに挿入し、メインレンダリングパスの一部としてレンダリングしたり、スタンドアロンレンダリングレコーディングとしてレンダリングしたりできるようになりました。スタンドアロンレンダリング記録からの結果は、 が宣言される順序によって制御される先行する拡張機能で利用できるようにすることができます。スタンドアロンレンダーエクステンションは、テクスチャアイテムのテクスチャプロバイダとして公開することもできます。これは、マテリアルやエフェクトなど、 のテクスチャタイプを消費する他の タイプで、その結果を使用できることを意味します。QtQuick3DQRhi QtQuick3D extensions QtQuick3D QtQuick3D
  • QSSG クラスファミリーはドキュメント化されており、限定的な互換性を約束する API として提供されています。Qt Spatial Scene Graph クラスは、QtQuick3D の内部型へのアクセスや、便利なヘルパーを提供します。QSSG クラスは主に2つのグループに分けられます。最初のグループは、QRhi を使用してQtQuick3D シーンにカスタムレンダリングを行うために必要な状態へのアクセスを提供します。一方、2 番目のグループのクラスは、QtQuick3D のレンダラブルへのアクセスと、QtQuick3D 内部で使用されているのと同じインフラストラクチャを使用して、それらのレンダラブルを変更、取得、または再レンダリングすることを可能にするヘルパーを提供します。
  • CustomMaterial 新しい と プロパティを取得しました。sourceAlphaBlend destinationAlphaBlend
  • Texture に新しいtextureProvidertilingModeDepth プロパティが追加されました。
  • View3D 新しい , , プロパティを追加しました。explicitTextureWidth explicitTextureHeight effectiveTextureSize

Qt Quick 3D Physics モジュール

Qt シリアルバスモジュール

  • UTF-8 以外のエンコーディングで DBC ファイルの解析を可能にするメソッドをQCanDbcFileParser に追加しました。

Qt Sql モジュール

  • 非推奨の <qsql.h> ヘッダが削除された。代わりに <qtsqlglobal.h> を使ってください。

Qt WebEngine モジュール

Qt Widgets モジュール

  • Qt のレンダリング・ハードウェア・インターフェイスでサポートされているハードウェア・アクセラレーション・グラフィックス API(OpenGL、Vulkan、Direct3D、または Metal)を介して 3D グラフィックスをレンダリングするためのQRhiWidget クラス(技術プレビュー中)を追加しました。
  • QCheckBox 新しいチェック状態を型安全な enum 値として出力する新しいシグナル checkStateChanged を追加しました。Qt::CheckState
  • QDateTimeEdit 新しい プロパティを追加しました。timeZone
  • Windows 11以上を実行しているシステムでは、新しいWindows 11ウィジェットスタイルがデフォルトで使用されます。このスタイルは、Windows のダークモードをサポートしています。

Qt SVG モジュール

  • SVG 1.1 標準のいくつかの要素のサポートを追加しました。対象要素はマスク、シンボル、マーカー、パターン、フィルタ、フィルタプリミティブ(feMerge、feColorMatrix、feGaussianBlur、feOffset、feComposite、feFlood)。
  • 新しい要素のレンダリングを有効または無効にするQtSvg::Options フラグを追加。
  • QSvgRendererQSvgWidgetQtSvg::Options のセッターとゲッターを追加。新機能はデフォルトで有効になっている。

ツール

Qt ウィジェットデザイナー

  • Qt Widgets Designer は、スコープされた列挙と Qt for Python をサポートするために、完全修飾された列挙値を.ui ファイルに書き込むようになりました。これらの値の読み取りは 6.6.1 と 6.5.4 にバックポートされました。

プラットフォームの変更

デスクトッププラットフォーム

Windows

macOS

  • macOS 14がビルドおよびターゲット・プラットフォームとしてサポートされました。

LinuxのWaylandクライアント

WebAssembly

  • ドロップサポート(ドラッグ&ドロップ)を追加しました。Qt は、ユーザーがアプリケーションのウィンドウにコンテンツをドロップすると、ドロップイベントを送信するようになりました。
  • OpenGL ES 3 / WebGL2 がデフォルトになり、OpenGL ES2 / WebGL 1 にフォールバックされるようになりました。
  • Emscripten のバージョンが 3.1.50 に更新されました。

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

アンドロイド

  • Android プラグイン Java コードのリファクタリングを行いました:
    • アーキテクチャと様々なクラス間の関係(例えば、QtActivity、QtActivityLoader、QtActivityDelegate間)を簡素化。
    • QtLoaderクラスをpublic bindingsパッケージから移動。
    • リフレクションの使用を削除。
  • Qt や他の QPA との一貫性を保つため、Android 用の子ウィンドウの予備サポートを追加。その結果、QScreen::grabWindow() は一時的にサポートされなくなりました。
  • サポートされるプラットフォームの最大バージョンを Android 14 に設定し、デフォルトのプラットフォーム SDK とターゲットレベルを API 34 に設定しました。
  • サポートされるAndroid NDKのバージョンをr26b(26.1.10909125)に、JDKを17に設定。
  • モバイルカテゴリのサンプルをiOSに合わせました。
  • QScreen の Android Display id へのアクセスを提供するQNativeInterface::QAndroidScreen を追加。
  • テストのクラッシュレポートをきれいに印刷するために、androidtestrunnerでndk-stackを使用するためのサポートを追加。
  • Android パッケージのデプロイメントタイプを明示的に設定するための CMake 変数 QT_ANDROID_DEPLOYMENT_TYPE を追加。
  • Qt Android プラットフォームのドキュメントの全体的な書き直しと更新。
  • Android プロジェクトで Qt の機能を利用するための機能を導入しました:

iOS

  • iOS 17 がターゲットプラットフォームとしてサポートされました。

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

Qt への起動

  • Yocto 4.3 (Nanbield) のサポートが追加された。
  • ARM Linux 開発ホストのサポートが追加されました。
  • ターゲットイメージに Squish のサポートが追加されました。
  • ターゲットハードウェアのサポートレベルが更新され、Tier 3 でサポートされるボードが追加されました:
    • Amazon AWS EC2 ARM64
    • NVIDIA Jetson AGX Orinデベロッパーキット
    • NXP i.MX8M Nano LPDDR4 EVK (DDR4 EVKの後継)
    • クアルコム・ロボティクスRB5開発キット
    • TI SK-AM69

VxWorks

  • 技術プレビューとしてVxWorks 23.09のサポートを追加しました。

ビルドシステムの変更

  • Qt C++ ヘッダーにIWYUツールのメタデータが追加されました。
  • CMake: DEPLOY_TOOL_OPTIONS を設定することで、qt_generate_deploy_app_script() や qt_deploy_runtime_dependencies() の *deployqt ツールの引数を微調整できるようになりました。
  • CMake: qt_add_library() が BUILD_SHARED_LIBS 変数の値を考慮するようになりました。この変数が定義されている場合、ライブラリターゲットを追加する際に、qt_add_library() のライブラリタイプ検出ロジックよりも優先度が高くなります。
  • CMake: qt_standard_project_setup() で、アプリケーションのネイティブ UI 言語と、UI が翻訳される言語を設定できるようになりました。これは qt_add_translations() 呼び出しによってピックアップされ、指定された言語にマッチする .ts と .qm ファイルを生成し、ネイティブ言語用の 'plural-only' .ts ファイルを生成します。
  • CMake: qt_add_translations() に複数のターゲットを渡して翻訳を抽出できるようになりました。また、qt_add_translations() にプロジェクトのすべてのターゲットを収集させることもできます(新しい qt_collect_translation_source_targets() 関数を使用します)。
  • CMake: qt_add_translations() はテクニカルプレビューから移動しました。

WebOS

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

API の変更一覧

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

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