Qt 6.7 の新機能
Qt 6.7 の新機能
Qt コアモジュール
- C++20 std::span の Qt 再実装であるQSpan を追加。
std::*_ordering
クラスの C++17 互換実装であるQt::strong_ordering 、Qt::weak_ordering 、Qt::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をサブクラス化し、必要なインターセプトメソッドをオーバーライドできるようになりました。
- QGrpcServerStream 、QGrpcClientStream 、QGrpcBidirStreamクラスを導入しました。これらはそれぞれ、クライアント、サーバー、双方向ストリーミングの呼び出しに使用されます。
注意: Qt GRPC モジュールは技術プレビュー中です。
Qt GUI モジュール
- Windows 10 と 11、macOS と iOS、Android のネイティブアイコンライブラリへのアクセスを提供するQIconEngine の実装を追加しました。
- 新しいイベントタイプQEvent::ChildWindowAdded とQEvent::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::autoPlay とVideo::autoPlay プロパティは、メディアソースが設定されたときに自動的に再生を開始するために使用できます。
- QCameraDevice に新しいcorrectionAngle プロパティが追加されました。このプロパティは、カメラの物理的な回転をネイティブの向きと比較して補正するために必要な回転角度を表します。
Qt ネットワークモジュール
- HTTP ヘッダーを表すQHttpHeaders クラスを追加しました。
- QNetworkRequest とQNetworkAccessManager で転送タイムアウトを設定するための std::chrono サポートを追加。
- QNetworkRequestFactory クラスを追加しました (Technical Preview)。このクラスはネットワークリクエストを作成するための便利なクラスです。
- QRestAccessManager およびQRestReply を追加 (Technical Preview)。これらのクラスは、RESTfulなユースケース向けに調整された便利なラッパーです。
Qt OPC UA モジュール
- 新しいQOpcUaHistoryEvent とQOpcUaHistoryReadEventRequest クラスを追加し、履歴イベントの読み取りを可能にしました。
- 一般的な OPC UA 構造体のデコードとエンコードをサポートするために、新しいQOpcUaGenericStructHandler クラスと関連するデータクラスを追加しました。
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_VALUE とQML_STRUCTURED_VALUE で設定できます。実際、Qt 6.5 からは既に可能でしたが、正式にサポートされました。
Qt クイックコンパイラ
- 値型のプロパティを記述するバインディングや関数を C++ にコンパイルできるようになりました。
- オプショナルチェインが C++ にコンパイルできるようになりました。
- for...in iteration が C++ にコンパイルできるようになりました。
Qt Quick モジュール
- ファイルから読み込むためのTextEdit.textDocument.source プロパティと、書き込むためのsave() とsaveAs() 関数が追加されました。これらは、テキストを扱うユースケースでXMLHttpRequest を置き換えるためのものです。
- TextEdit とTextArea にcursorSelection プロパティを追加し、選択したテキストのプロパティを検査および変更できるようにしました。
- テキスト・エディターのサンプルを更新し、これらの機能を示すようにした。
- 非常に大きなテキストのレンダリングでより良い結果をもたらす新しいテキスト・レンダラーを追加。これはrenderType を
Text.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 モジュール
- strong-typed引数を取る以下の関数を追加しました:
- pushItem()
- pushItems()
- popToItem()
- popToIndex()
- popCurrentItem()
- replaceCurrentItem()
- push,pop,replace 関数とは異なり、これらは QML コンパイラによって C++ にコンパイルすることができます。
Qt Quick Shapes モジュール
- Curve Rendererと関連プロパティpreferredRendererType が正式にサポートされ、実験的なものとは見なされなくなりました。
- 形状を特徴付けるためのpathHints プロパティが追加されました。これは、パスの処理とレンダリングを最適化するためにレンダラーが使用する可能性があります。
- シェイプは、シェイプの外接矩形に基づく暗黙のサイズを持つようになり、レイアウトで適切に配置されるようになりました。アイテムに暗黙的なサイズとは異なる明示的なサイズが与えられたときのシェイプの動作を変更するために、fillMode 、horizontalAlignment 、verticalAlignment のプロパティが追加されました。
- 技術プレビューとして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 内部で使用されているのと同じインフラストラクチャを使用して、それらのレンダラブルを変更、取得、または再レンダリングすることを可能にするヘルパーを提供します。
- QSSGRenderExtension - Render Extensions のバックエンド実装。
- QSSGRenderContextInterface - で内部的に使用されるサブシステムの集約クラス。QtQuick3D
- QSSGRhiContext QSSGRhiGraphicsPipelineState, - convenience class used By .QSSGRhiSamplerDescription QRhi QtQuick3D
- QSSGFrameData - レンダーエクステンションが使用するフレームごとのデータ。
- QSSGRenderHelpers QSSGModelHelpers, , and - レンダラブルにアクセス、セットアップ、レンダリングするためのヘルパークラス。QSSGCameraHelpers QSSGRenderExtensionHelpers QtQuick3D
- CustomMaterial 新しい と プロパティを取得しました。sourceAlphaBlend destinationAlphaBlend
- Texture に新しいtextureProvider とtilingModeDepth プロパティが追加されました。
- View3D 新しい , , プロパティを追加しました。explicitTextureWidth explicitTextureHeight effectiveTextureSize
Qt Quick 3D Physics モジュール
- HeightFieldShape:image プロパティで QML Image タイプをソースとして使用できるようにした。
- ConvexMeshShape:geometry プロパティを通して、QQuick3DGeometry をソースとして使用できるようになりました。
- TriangleMeshShape:geometry プロパティを通して、QQuick3DGeometry をソースとして使用することをサポート。
- PhysicsWorld:
- reportKinematicKinematicCollisions 、reportStaticKinematicCollisions 、それぞれキネマティック・キネマティック、スタティック・キネマティック衝突報告を有効にするプロパティを追加しました。
- シミュレーションのスレッド数の設定をサポートしました。
- PhysicsNode:衝突フィルタリングのサポートを追加しました。ノードにグループIDを指定し、そのグループ間の衝突を無視することが可能になった。
- PhysicsBody:simulationEnabled プロパティでボディのシミュレーションを無効にするサポートを追加。
Qt シリアルバスモジュール
- UTF-8 以外のエンコーディングで DBC ファイルの解析を可能にするメソッドをQCanDbcFileParser に追加しました。
Qt Sql モジュール
- 非推奨の <qsql.h> ヘッダが削除された。代わりに <qtsqlglobal.h> を使ってください。
Qt WebEngine モジュール
- FIDO2ユーザー認証と常駐クレデンシャルをサポートするために、新しいAPI QWebEngineWebAuthUXRequestとQML型WebEngineWebAuthUXRequestを追加した。
- デスクトップ・スクリーン・キャプチャのソース選択を可能にする新しいapiQWebEngineDesktopMediaRequest を追加。
- WebEngineDriverを追加し、ブラウザをまたいだWebサイトのテストを自動化しました。WebEngineDriverはChromeDriverをベースにしている。
- QIODevice API を使用してリクエストの本文にアクセスするために、QWebEngineUrlRequestInfo::requestBody を追加した。
- すべてのウェブコンテンツを自動的にダークテーマでレンダリングするための設定 forceDarkMode とForceDarkMode を追加。
- シグナルQWebEngineProfile::clearHttpCacheCompleted とQQuickWebEngineProfile::clearHttpCacheCompleted を追加した。
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 フラグを追加。
- QSvgRenderer とQSvgWidget のQtSvg::Options のセッターとゲッターを追加。新機能はデフォルトで有効になっている。
ツール
Qt ウィジェットデザイナー
- Qt Widgets Designer は、スコープされた列挙と Qt for Python をサポートするために、完全修飾された列挙値を
.ui
ファイルに書き込むようになりました。これらの値の読み取りは 6.6.1 と 6.5.4 にバックポートされました。
プラットフォームの変更
デスクトッププラットフォーム
Windows
- Windows 11 のスタイルが追加されました。
- Windows でQScreen の基本ハンドルへのアクセスを提供するQNativeInterface::QWindowsScreen を追加。
macOS
- macOS 14がビルドおよびターゲット・プラットフォームとしてサポートされました。
LinuxのWaylandクライアント
- QScreen の基礎となる Wayland オブジェクトへのアクセスを提供するQNativeInterface::QWaylandScreen を追加しました。
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 の機能を利用するための機能を導入しました:
- Java や Kotlin のコードで Qt Quick を使用するためのQt Quick View Android Class(テクノロジープレビュー)。
- Qt Tools for Android Studiofor Android Studio(テクノロジープレビュー)。
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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。