Qt 6.6 の新機能
Qt 6.6 の新しいモジュールと復活したモジュール
Qt 6.6 では、以下のモジュールとツールが追加されました:
テクニカルプレビューの新規モジュールと復元モジュール
注意: API と ABI の安定性は保証されていません。
Qt Graphs モジュール
Qt Graphs Qt Data Visualization の代替モジュールです。Qt Data Visualization のように OpenGL 2.1 に依存するのではなく、Qt Quick 3D をレンダリングエンジンとして使用し、ネイティブのグラフィックスバックエンドをサポートします。
このモジュールは、Qt Data Visualization の機能のすべてではないにしても、ほとんどを提供します。テクニカルプレビューでは、一部の高度な機能が不完全な場合があります。
Qt 6.6 の新機能
Qt コアモジュール
- コンストラクタの nodiscard をマークするために適用するQ_NODISCARD_CTOR マクロを追加しました。このマクロは、サポートしているコンパイラでは
[[nodiscard]]
に解決され、その他のコンパイラでは何もしません。 - 以下の Qt コンテナに
assign()
オーバーロードを追加した:QVarLengthArray QList 、QByteArray 、QString 。これらの関数は、既存のcapacity()
を再利用しながら新しいデータを割り当てる便利な方法です。 - CMakeLists.txt で QT_DISCARD_FILE_CONTENTS ソースファイルプロパティを指定することで、リソースファイルシステムに追加されたファイルの内容を省略することができます。ファイル・ノードは保持されます。手動で
.qrc
ファイルを書き込む場合は、file
XML ノードのempty
属性をtrue
に設定することで、同じ効果を得ることができます。 - QFileInfo 生のパスを返す新しい () メンバ関数と、タイムスタンプに関連する関数に を取る新しいオーバーロードが追加されました。readSymLink QTimeZone
- QProcess::UnixProcessParameters struct とQProcess::UnixProcessFlag enum は、新しいQProcess::setUnixProcessParameters() メンバ関数で使用することができ、子プロセスの Unix 固有の設定やパラメータを変更することができます。
- 新しいQNativeIpcKey クラスは、QSharedMemory とQSystemSemaphore で使用されるネイティブ・キーを保持し、Apple プラットフォームのサンドボックス・アプリケーションをより良くサポートします。詳細はネイティブ IPC キーを参照してください。
- タイムスパンを扱うほとんどの Qt API は、
std::chrono
から関連するデータ型に移植されました。 - QXmlStreamReader::hasStandaloneDeclaration() は、ドキュメントに明示的なスタンドアロン宣言があるかどうかを報告します。
Qt GRPC モジュール
- QGrpcChannelOptions とQGrpcCallOptions を追加しました。これらは、チャンネルと呼び出しにオプションを渡すための新しいメソッドです。
- 呼び出しに追加のメタデータを渡すためのQGrpcMetadataを追加しました。
- 自動生成される QtGRPC クラスの QML-types サポートを統合した。
Qt GUI モジュール
- フォントの OpenType 機能に直接アクセスできる QFont::setFeatures() を追加。
- QPalette デフォルトでシステムのアクセントカラーを使用する () カラーエントリが追加されました。accent
- QRhi ファミリーのクラスが完全にドキュメント化され、限定的な互換性を約束する API として提供されるようになりました。Qt Rendering Hardware Interface は 3D グラフィックス API とシェーディング言語の抽象化レイヤで、Qt Quick や Qt Quick 3D などのモジュールで使用され、Direct 3D 11/12、Vulkan、Metal、OpenGL、OpenGL ES 上で機能する、クロスプラットフォームで移植可能なレンダリングエンジンとマテリアルシステムを実装します。プラットフォーム固有の 3D API やシェーディング言語に直接依存することなく、独自の低レベルレンダリングを実行したいアプリケーションは、QRhi と関連クラスを使用して Qt Quick シーンを拡張したり、QWindow にレンダリングしたり、テクスチャにオフスクリーンレンダリングを実行したり、GPU の計算ワークロードをディスパッチしたりできるようになりました。以前の Qt 6 リリースでは、QRhi クラスは完全にプライベートであり、ドキュメンテーションは標準 Qt ドキュメンテーションセットの一部として提供されていませんでした。つまり、パブリック Qt API の標準的なパターンやソース/バイナリの互換性をすべて提供するわけではありませんが、中級/上級レベルのアプリケーション開発者が使用できる特別なクラス群です。QRhi API のドキュメントは標準 Qt ドキュメントの一部となりました。また、rhiwindow のサンプルを導入しました。
- QRhi に Direct 3D 12 バックエンドを追加しました。Qt Quick とQQuickWidget のデフォルトのバックエンドは Windows の Direct 3D 11 です。新しい D3D12 バックエンドは、当面は実験的なものと考えるべきで、主に、アプリケーション自身または D3D12 を必要とする外部コンポーネントのレンダリングエンジンや計算エンジンとの相互運用を簡素化するために、Qt に Direct 3D 12 経由でレンダリングを実行させる必要があるアプリケーションに役立ちます。
- Qt 6 アプリケーションは、新しいQUtiMimeConverter (macOS 用) とQWindowsMimeConverter (Windows 用) クラスを使用して、カスタムまたはプラットフォーム固有のクリップボード形式をサポートできるようになりました。これらのクラスは Qt 5 の QMacPasteboardMime 型と QWindowsMime 型の統合版です。既存の実装を適応するためのヘルプは移植ガイドを参照してください。
- QTextListFormat::setStart() は、テキストリストを 1 以外のインデックスで開始できるようにします。
Qt Location モジュール
- 地図アイテムがより正しくレンダリングされるようになりました。
- 地図アイテムは、異なる参照サーフェスを使用してレンダリングできるようになりました。QLocation::ReferenceSurface 列挙型には
Map
とGlobe
のオプションがあり、アイテムタイプのreferenceSurface プロパティと一緒に使用することで、アイテムを平坦なマップ上にレンダリングするか、地球儀の曲率に従うかを制御できます。 - Shift修飾子を押しながらマウスホイールを動かすとbearing 、Control修飾子を押しながらマウスホイールを動かすとtilt 。
Qt Multimedia モジュール
- Qt Multimedia ライブラリでは、オーディオやビデオの許可が要求されなくなりました。クライアントアプリケーションは、C++ またはQMLpermissions API を使用してパーミッションを要求する必要があります。
- 新しいQWindowCapture クラスは、QMediaCaptureSession 内の個々のデスクトップ・アプリ ケーション・ウィンドウのビデオ・キャプチャをサポートします。 記録されたビデオは、QMediaRecorder やQVideoWidget など、どのタイプのビデオ出力にも向けることができます。
- QMediaRecorder は、ビデオの品質、解像度、ビットレートをよりよく制御できるプロパティで拡張されています。
Qt PDF モジュール
- 新しいQPdfLinkModel クラスは、指定されたページ上のリンクジオメトリとリンク先を提供します。
- QPdfDocument::pageModel() はQt::DecorationRole を実装し、ページのサムネイルをオンデマンドでレンダリングします。
- 新しいQPdfPageSelector クラスは、ウィジェットベースの PDF ビューアでページを選択するための特別なQSpinBox です。
Qt ポジショニングモジュール
- Qt Positioningライブラリは、ロケーションパーミッションを要求しなくなりました。クライアントアプリケーションは、C++ またはQMLpermissions API を使用してパーミッションを要求する必要があります。
Qt Protobuf モジュール
- 特定の Qt Core と Qt GUI タイプを *.proto スキーマの一部として使用できるようになりました。
- 自動生成されるQProtobufMessage クラスの QML-types サポートを統合。
- 自動生成されたQProtobufMessage クラスの暗黙的な共有データへの移行。これにより、多くのコピーを作成することなく、QML コンテキストからメッセージタイプに値単位でアクセスできるようになりました。
- Qt Protobuf Well-Known Typesのgoogle.protobuf.Any型のサポートを追加しました。
- 値を含む必要のない、protobuf のユニオンのような型であるoneof型のサポートを統合しました。
Qt Bluetooth モジュール
- Qt Bluetooth ライブラリは、Bluetooth パーミッションを要求しなくなりました。クライアントアプリケーションはC++ またはQMLpermissions API を使用してパーミッションを要求する必要があります。
- Qt がネイティブの 128 ビット符号なし int 型 quint128 を提供するようになりました。これをサポートするプラットフォームでは、QBluetoothUuid(quint128) コンストラクタとQBluetoothUuid::toUInt128() メソッドは、以前の Qt バージョンが使用していたカスタム構造体の代わりに、この型を使用するようになりました。あなたのコードがquint128を不透明な型として扱う限り、この変更はソースとバイナリに互換性があります。しかし、問題が発生した場合は、QUuid::Id128Bytes 、新しいオーバーロードを使用することを検討してください。128ビットint型をサポートしていないプラットフォーム(MSVCなど)では、Qt Bluetoothのカスタム構造体を使用します。
Qt QML モジュール
- QML によるアプリケーションのパーミッション管理のサポートを追加しました。Qt Qml Coreモジュールは、Qt C++ のアプリケーションパーミッション機能を QML に公開します。詳しくはQML Application Permissionsを参照してください。
- XMLHttpRequest オブジェクトに2つの機能が追加され、モダンブラウザに近づきました。responseURL プロパティが追加され、リダイレクトの有無を確認できるようになりました。同様に、overrideMimeType メソッドが追加され、レスポンスの Content-Type ヘッダではなく、特定の MIME タイプに基づいてXMLHttpRequest オブジェクトがレスポンスを解析するようになりました。
- QML言語サーバーは、go-to定義とfindの使い方を初期サポートしました。また、完全なドキュメントフォーマットもサポートしています。
- プラグインで qmllint を拡張できるようになりました。プラグイン API は現在技術プレビュー中です。
Qt Quick モジュール
- フォント内の OpenType 機能に直接アクセスするためのfont.features プロパティを追加しました。
- TableView selectionMode プロパティが追加され、単一または複数のセルを選択できるようになりました。
- TreeView モデルからサブツリーだけを表示するための プロパティが追加されました。rootIndex
- AnimatedImage が プロパティに対応しました。sourceSize
- 環境変数
QT_QUICK_FLICKABLE_WHEEL_DECELERATION
、「クリッキー」ホイール・マウスでスクロールした後の減速をカスタマイズできるようになりました。デフォルトでは、(プラットフォームが独自の加速度を提供しない限り)スクロール距離が「クリック」回数に比例するように、加速度がオフになりました。flickDeceleration プロパティはタッチフリックにのみ適用されるようになりました。 - ほとんどのプロパティがFINALになりました。つまり、同じ名前で新しいプロパティを宣言しても、シャドウされなくなりました。
FINAL
プロパティがシャドウされた場合、警告が発せられます。予期せぬ動作の変化を避けるため、そのようなプロパティの名前を変更することをお勧めします。 - QQuickWindow 、QQuickRenderControl 、QSGTexture にQRhi 関連の関数を追加し、公開しました。オンスクリーンまたはオフスクリーンの Qt Quick レンダリングで使用されるQRhi,QRhiSwapChain,QRhiCommandBuffer のクエリが簡素化されました。これまでQRhi* クラスに依存していたためにドキュメントから隠されていたいくつかの関数が見えるようになりました。createTextureFromImage() と対になるQQuickWindow にcreateTextureFromRhiTexture() を追加しました。
- シーングラフのサンプルを更新しました:rhiunderqmlを追加し、レガシーなOpenGL専用のfboitemのサンプルを、新しいポータブルなrhitextureitemのサンプルに置き換え、customrendernodeのサンプルを更新しました。また、customrendernode の例を更新しました。これらは、Qt Quick シーンをカスタムの低レベル 2D/3D レンダリングで拡張する 3 つの方法を示しています (3つのアプローチとは、アンダーレイ/オーバーレイ、テクスチャへのレンダリングに裏打ちされたカスタムアイテム、QSGRenderNode を使用したカスタムアイテムです)。
- レンダリング前にパスを自動的に簡略化する Path::simplified プロパティを追加しました。これはQPainterPath::simplified() 関数を反映しています。
- QQuickWindow'のレンダリングに GPU タイムスタンプを収集するサポートを追加しました。QQuickGraphicsConfiguration のsetTimestamps() または対応する環境変数で有効にすると、
qt.scenegraph.time.renderloop
のようなロギングカテゴリを有効にしたときに出力されるデバッグ出力や、Qt Quick 3D のDebugView アイテムに、CPU 側のタイムスタンプを補完する GPU 側のタイムスタンプが表示されます。これは現在、Direct 3D 11、Metal、Vulkanでサポートされています(基礎となるVulkan実装がタイムスタンプクエリをサポートしている場合)。残りの 3D API のサポートは将来のリリースで導入される予定です。
Qt Quick Controls モジュール
- SpinBox にlive プロパティを追加しました。これは、ユーザーがdisplayText を編集したときにvalue を更新するかどうかを制御します。
- Dial にwrapped シグナルを追加。これは、ダイアルがラップアラウンドした時、つまり、最大値を超えて最小値になった時、またはその逆の時に発せられます。
- Dial にstartAngle とendAngle プロパティを追加しました。これらのプロパティは、ダイヤルの開始角度と終了角度を度単位で制御します。
Qt Quick Layouts モジュール
- レスポンシブレイアウトを書くためのヘルパーアイテムLayoutItemProxy を追加しました。
- uniformCellSizes 、uniformCellSizes 、uniformCellWidths 、uniformCellHeights プロパティを追加しました。
- StackLayout 現在のインデックス以下のインデックスにアイテムが挿入または削除された場合、 を更新するようにしました。currentIndex
Qt Quick Shapes モジュール
- 実験的な曲線レンダリングバックエンドを追加しました。このバックエンドは、デフォルトのジオメトリレンダラよりも高品質で曲線をレンダリングし、MSAA を使用せずにアンチエイリアスを適用します。これはShape::preferredRendererType プロパティで選択できます。
Qt Quick 3D モジュール
- ProceduralTextureData というTextureData をプロシージャルに作成する QML API を追加しました。これまでは、QQuick3DTextureData をサブクラス化することで C++ 経由でのみ可能でした。
- ProceduralMesh というメッシュ形状を手続き的に作成する QML API を追加しました。これまでは、QQuick3DGeometry をサブクラス化することによって、C++を介してのみ可能でした。
- PLYファイルをインポートできるようになりました。
- QQuick3DTextureData による 3D テクスチャ作成のサポートを追加しました。
- レンダラー拡張の初期サポートを追加しました。これは、追加パスの追加と、ビルトインレンダーパスのカスタマイズを可能にする最初のステップです。View3D には、QQuick3DRenderExtension サブクラスの配列を受け取る extensions という新しいプロパティがあります。これは、QQuick3DExtensionHelpers のヘルパー関数を使用してさらにサポートされます。
Qt Sql モジュール
- Mimer SQL用のプラグインが追加されました。
- MySQL/MariaDB に新しい接続オプション MYSQL_OPT_PROTOCOL、MYSQL_SHARED_MEMORY_BASE_NAME、MYSQL_OPT_TLS_VERSION、MYSQL_OPT_SSL_MODE が追加されました。
- ODBCプラグインが、すべてのネイティブ・エラー・コードをQSqlError
- QSqlQuery boundValueName()/boundValueNames() 関数が追加されました。
Qt TextToSpeech モジュール
QTextToSpeech クラスは、すべてのエンジンで利用可能な、さらにいくつかのトリックを学びました:
- アプリケーションは、enqueue を介して、合成エンジンに複数のテキストチャンクを追加できます。
- 新しいaboutToSynthesize シグナルは、テキストのチャンクが合成される直前に発せられます。
- findVoices のメンバ関数を使えば、エンジンが提供する音声の中から条件を指定して選択することが簡単にできます。QML コードではさらに、VoiceSelector タイプをアタッチ・プロパティとして使用できます。
すべての新機能がすべてのエンジンで利用できるわけではありません。アプリケーションは、新しいCapabilities フラグとengineCapabilities プロパティを使用して、現在使用しているエンジンが以下の新機能のどれをサポートしているかを確認できます:
- エンジンにSynthesize 機能がある場合、QTextToSpeech はテキストを PCM データに合成できるようになりました。synthesize 関数は、合成時に PCM データのチャンクを受け取る callable で使用できます。
- エンジンがWordByWordProgress ケーパビリティを持っている場合、QTextToSpeech は、現在のテキストのチャンクの各単語が発話されるたびに、sayingWord シグナルを発信します。
Qt WebEngine モジュール
- QWebEngineLoadingInfo にレスポンスヘッダを追加。
- QWebEngineUrlRequestJob にレスポンスヘッダを追加できるようにした。
- カスタム url スキーム用の HTML5 Fetch API を有効にするためのQWebEngineUrlScheme::FetchApiAllowed フラグを追加した。
- qWebEngineGetDomainAndRegistryChromium/QtWebEngine が認識する実効トップレベルドメインを読み込む () 関数を追加しました。
- QWebEngineSettings::DisableReadingFromCanvas 設定を追加し、フィンガープリンティングから保護するためにキャンバスの読み取りを無効にしました。
Qt Widgets モジュール
- QWidget 新しい setTabOrder() オーバーロードが追加され、イニシャライザーリストを取るようになりました。
- QMessageBox::Option 各メッセージボックスに対して、ネイティブメッセージボックスを使用するかどうかを制御する手段を提供します。
プラットフォームの変更
デスクトップ・プラットフォーム
macOS
- ユーザープロジェクトや Qt for macOS 自体のビルドに、少なくとも CMake バージョン 3.21.1 が必要になりました。
- QMessageBox::setCheckBoxネイティブメッセージボックスを使用する際に、() が尊重されるようになりました。
- QFileDialog 権限ダイアログが不必要にトリガーされることがなくなりました。
モバイルプラットフォーム
アンドロイド
- QDesktopServices::openUrl() を使用する際の FileProvider サポートを追加。
- デフォルトで AndroidX を追加(FileProvider の依存関係)。
- アンドロイド固有のターゲットプロパティにQTP0002CMake ポリシーを導入。
- Android でサポートされるサンプルのリストを更新。
- Android 13を最大サポートバージョンとした。
- Gradleをバージョン8.3.0に更新。
- QFileDialog 選択された名前フィルターだけでなく、提供されたすべての名前フィルターが有効になるようにした。
- Android ターゲットの SDK レベルを 33 に更新し、2023 年の Play Store の要件に合わせました。
iOS
- レンダリングと入力をマスクするためのQWindow::setMask() のサポートを追加。
- QWindows に UIViews を埋め込むための、外部ウィンドウのサポートを追加。
組み込みプラットフォーム
Qt への起動
- Yocto 4.2 (mickledore)のサポートを追加。
- ターゲットハードウェアのサポートレベルを更新しました:
- NXP i.MX 93 ボードの Tier 1 サポートが追加されました。
- Jetson AGX XavierボードのTier 1サポートを追加。
- NXP i.MX 8QuadXPlusボードのTier 3サポートが追加されました。
- Toradex Apalis iMX8 ボードの Tier 3 サポートを追加。
- Toradex と ST のターゲットが最新の Yocto LTS バージョン (kirkstone) を使用するようになった。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。