このページでは

C

2.12の新機能

Qt Quick Ultraliteは、マイナーリリース間のソース互換性を維持しています。ただし、一部の変更については、アプリケーションのコードを適宜修正する必要がある場合があります。以下のセクションでは、そのような変更点について説明します。

新機能

  • 以下のターゲットプラットフォームのサポートが追加されました:
  • Green Hills または IAR ツールチェーンを使用して構築されたInfineon TRAVEO T2G ターゲットに DeviceLink サポートを追加しました。これにより、Squish を使用した UI テストの自動化が可能になります。
  • QmlProjectの改善および更新:
    • 言語リストを生成する前に、すべてのqmlproject ファイル内の翻訳データを解析するようになりました。
    • 翻訳ファイル用に個別のストレージセクションを定義できるようにするため、MCU.Config.translationStorageSectionプロパティを追加しました。
    • グリフレイアウトおよびシェーピングデータのキャッシュサイズを定義するための `MCU.Config.glyphsLayoutCacheSize` プロパティを追加しました。
    • 設定ファイル、QMLファイル、ソースファイルをエクスポートせずに、リソースバイナリのみを再生成できるようにするコマンドラインオプション`--generate-resource-binaries` を追加しました。
    • Monotype Spark フォントエンジンのフォントファイルをリソースバイナリに保持し、バージョンおよびチェックサムの検証を可能にしました。
    • アプリケーションがサポートする言語のリストは、メインの QmlProject ファイル内の翻訳ファイルに基づいています。
    • Safe Renderer モジュールをサポートするために、以下の MCU.Config プロパティを追加しました。
  • CompilerExtraOptions から GCC コンパイラ固有のオプションおよびフラグを削除しました。これらは CMake ツールチェーンファイル (armgcc.cmake) でも設定されていたためです。これにより、オプションやフラグのハードコーディングを回避し、カスタマイズ可能にしました。
  • アプリケーションがサポートする言語のリストを取得するためのQul::activeLanguages プロパティを追加しました。
  • Position インスタンス内でtimestamp インスタンスをサポートできるようにするため、date 値型を追加しました。
  • 外部フラッシュに保存された Monotype データテーブルの整合性を検証するための `Qul::validateMonotypeDataTableChecksums()` を追加しました。これらのデータテーブルを外部フラッシュに保存することで、内部フラッシュの容量を約~57 KB 節約できます。詳細については、「Monotype データテーブルの外部フラッシュへの配置」を参照してください。
  • STM32F769I Discovery Kit において、thermoデモを更新し、MonotypeデータテーブルをデフォルトでQSPIに保存するようにしました。
  • 初期化の動作を制御するためのQul::initResources()オプションを追加しました。
  • グリフレイアウトデータのキャッシュサイズを制御するための `MCU.Config.glyphsLayoutCacheSize` を追加しました。
  • qmltocpp 改善点:
    • 特定のルートオブジェクトに対するすべてのプロパティバインディングを設定するコードを改善し、テーブルベースのセッターを使用するようにしました。これにより、コードのフットプリントが大幅に削減されます。
    • 組み込みの読み取り専用リストプロパティに対するエラーチェックを追加しました。
  • ターゲットハードウェアからコードカバレッジの結果を取得するためのCocoへの対応を追加しました。
  • アプリケーションとそのリソースデータを個別に更新する機能を追加しました。また、queryResourceStorageSectionInfo() およびinitResources() API に追加のオプションを導入し、OTA(Over The Air)更新で利用可能なリソースデータに基づいて UI 機能を有効にできるようになりました。
  • RTOS、SDK、およびコンパイラのアップグレード:
    • Windows 11 上の MSVC コンパイラを 2022 版に更新しました。
    • Renesas RH850/D1M1A RGL SDKをv2.2.0aに更新。
    • Renesas プラットフォーム SDK をバージョン 25.06.00 に更新。
    • NXP プラットフォーム SDK をバージョン 25.09.00 に更新。
    • STM32CubeH7 SDKをバージョン1.12.1に更新。
    • Zephyr RTOS を v4.1 に更新。
  • パフォーマンスログにおけるキャッシュメモリ使用状況のレポートを改善し、ブロックのオーバーヘッドを含むすべての割り当て領域をカウントするようにしました。
  • アサートを行う代わりに、リソースキャッシュに十分な空き領域があるかどうかを確認する `maybeTexture()` メソッドを追加しました。
  • MCU.Config.Experimental.multiLineElideQmlProject プロパティを使用して有効にできる、複数行の省略モードが追加されました。このモードでは、利用可能な幅を超える行はすべて省略されます。高さを明示的に設定する必要はありません。
  • Text アイテムで表示される行数を制限するためのmaximumLineCount プロパティを追加しました。
  • ナビゲーション API の改善:
    • 2つの座標間の遷移をアニメーション化するCoordinateAnimation を追加しました。
    • geoCoordinate のメモリ要件を最適化しました。
    • `QtPositioning ` グローバル型を追加し、`coordinate()` メソッドを提供しました。
    • 2つの座標間の距離(メートル単位)を計算するdistanceTo()メソッドを追加しました。
    • アプリケーションがGeoPositionInfo 内でこれらのプロパティを設定できるようにするため、speed およびtimestamp が追加されました。QMLでこれらのプロパティにアクセスするための対応する読み取り専用プロパティは、Position::speed およびPosition::timestamp です。

修正された問題

Qt for MCUs v2.12.2

  • Loader 実行時に読み込まれたコンテンツのサイズが変更されても、以前のサイズが維持されなくなりました。
  • parent プレフィックスを使用してプロパティにアクセスする、カスタムcontentItem を持つコントロールで発生していたクラッシュを修正しました。
  • インライン画像での範囲外読み取りの不具合を修正しました。
  • デバッグビルドの ROM 占有量を約 3.5 Kb 削減しました。
  • Text 項目の修正:
    • 自動改行の処理を修正し、改行ポイントを検出する際に「advance」ベースのメトリックを使用するようにしました。これにより、場合によってはグリフのインクがテキスト幅を超えて表示されることがあります。clip を使用している場合は、グリフが切り取られて表示されるのを防ぐために、わずかな余白を追加することを検討してください。
    • ソフトハイフン(\\u00AD )および、<b> および<i> タグを使用したStyledText のサポートを追加しました。
    • ideographicCharacterWrap MCU.Config オプションと、-DIDEOGRAPHIC_CHARACTER_WRAP CMake 代替オプションが追加されました。このオプションを使用して、静的にプリプロセスされた文字列の改行位置を制御します。 これを `false ` に設定すると、WordWrap モードにおいて、CSS の `word-break: keep-all` と同様に、隣接する CJK 表意文字をまとめて保持します。この設定では、改行はスペース、句読点、および `U+200B `(ゼロ幅スペース)などの明示的な改行位置でのみ発生します。デフォルトの動作(`true`)は変更されておらず、Qt XML と互換性があります。
    • WordWrapモードでは、タイ語およびクメール語のテキストがUnicodeの改行推奨事項に従うようになり、単語の途中ではなく、スペースやU+200B (ゼロ幅スペース)などの明示的な改行位置で改行が行われるようになりました。明示的な改行位置がないテキストは、項目の幅を超える可能性があります。従来通り単語の途中で改行するには、Wrap またはWrapAnywhere を使用してください。
  • PathView:
    • count プロパティを追加しました。
    • 先頭に有効なインデックスを割り当てることで、currentIndex の値が範囲外になる問題を修正しました。
  • qmltocpp 修正点:
    • PropertyChanges::target の値が親のid をプレフィックスとして使用する場合に発生していたコンパイラエラーを修正しました。例:target: myItem.label 。ここで、myItem は親項目のIDであり、label はその子項目です。
    • State バインディングによってsource プロパティが設定された際に、Loader が正しいコンポーネントを選択するよう修正しました。
  • FontmapEditorをv4.0.1にアップグレードしました。
  • qmlproject 修正点:
    • MCU.Config 内のfileSelector プロパティがメインファイルを選択するように修正しました。
    • あるモジュールの QML インターフェース型を他のモジュールから参照できるようにすることで、マルチモジュールプロジェクトのサポートを強化しました。
    • プラットフォームへのエクスポートに失敗した際のエラーメッセージを改善しました。メッセージにはサードパーティ製ライブラリのパスが含まれるようになり、失敗の原因に関するより詳しい情報が提供されるようになりました。
  • デスクトップシミュレータ:
    • Squish が記録セッションを一時停止した際に発生していたフリーズを修正しました。
    • Squishとシミュレータを併用した際に、終了時に発生していたクラッシュを修正しました。
  • T2G TRAVEOの修正および更新:
    • アプリケーションのパフォーマンスを向上させるため、命令キャッシュおよびデータキャッシュを有効化しました。
    • RelWithDebInfo ビルドタイプでIARコンパイラを使用した場合に、T2G TRAVEO 6Mおよび6M Liteでプラットフォーム初期化中に発生していたクラッシュを修正しました。
    • ImageLayer.source への実行時変更を処理し、画面上に確実に反映されるようにしました。
    • UIの読み込み後にImageLayer.source プロパティを設定する際のエラーを修正しました。
    • ModusToolbox プラットフォームで retarget-io v1.9.0 のサポートを追加しました。
    • T2G TRAVEO 6M および 6M Lite での HyperRAM サポートを有効化しました。
    • ItemLayer の位置や不透明度をアニメーション処理した際のちらつきを修正しました。
    • LoaderRepeaterListView などから表示中のアイテムを削除した後の CPU 使用率の高さを修正しました。
    • HDMI出力時のT2G 6M Liteにおけるアニメーションのちらつきを修正しました。

Qt for MCUs v2.12.1

  • ARMGCCツールチェーンファイルから-ffreestanding コンパイラフラグを削除しました。これにより、GCC 13以降のバージョンでビルドする際、互換性のない<cmath> ヘッダーが使用されるのを回避します。
  • Windows 10 上の MSVC 2019 環境でクラッシュが発生する問題を修正するため、automotiveおよびmotor_clusterデモを修正しました。タスクがアクティブな間にデータが失われるのを防ぐため、タスクおよびタイマーの処理をstd::map およびstd::vector に移行しました。
  • bytesPerLine を削除し、imageInformation を更新して、イメージのすべてのプロパティを含めるようにしました。
  • アップグレード:
    • ARM GNU ツールチェーンのヘッダーを v15.2.rel1 にアップグレードし、CVE-2024-0151 の脆弱性を修正しました。
    • TRAVEO T2G CYT4DNのModusToolboxtviic2d-gfx-mw ドライバーをバージョン1.0.1にアップグレードしました。
  • qmltocpp 修正点:
    • パラメータ付きシグナルを処理するConnectionsの解析中に発生していたクラッシュを修正しました。
    • ListModel<T> 型のプロパティにおけるリグレッションを修正しました。
    • プロパティのバインディングを解決する際に、Itemの追加プロパティを解析するようにしました。
    • 親アイテムの可視性が変更された際、子アイテムの可視性を更新するようにしました。
    • ディレクトリのインポートをチェックし、現在のコンポーネントが依存する関連するQMLコンポーネント定義のみを含めるようにしました。ディレクトリ内のコンポーネントへの依存関係がない場合は、そのインポートを無視します。
  • TRAVEO T2G 6M Lite 向けに、Linux 上のネイティブ `Infineon ` リソース生成ツールのサポートを追加しました。
  • Item タイプのレイアウトロジックを修正し、その暗黙的なサイズの変更に対応しました。
  • qmlprojectexporter を更新し、ボードのデフォルトCMake設定で定義されたtranslationStorageSection も考慮するようにしました。

Qt for MCUs v2.12.0

  • TRAVEO T2G ターゲットにおいて、OTF レイヤーを使用する際にリソースキャッシュを利用して、複数のフレームにわたってアセットを保持できるようにしました。これにより、Qt Quick Ultralite Core でレンダリング中のテクスチャデータが無効化された際に、OTF レイヤー上で発生する視覚的なアーティファクトを回避できます。
  • IAR ツールチェーンに基づくSTM32F769Iターゲットでのメモリ不足例外を修正しました。IAR ビルドについても、スタックサイズを 24K に固定するように変更しました。
  • T2G TRAVEOボード上でパスストロークを描画する際のグラフィックの不具合を修正しました。
  • TRAVEO T2G ターゲットにおいて、JPEG デコーダがハードコードされたメモリアドレスを使用するのではなく、動的にメモリを割り当てるように修正しました。
  • destRect.topLeft() != srcRect.topLeft() の場合、TRAVEO T2Gターゲットでの不正確な透視変換を修正しました。
  • TRAVEO T2Gでサーフェス割り当てに失敗した際のエラー報告を改善しました。
  • 描画エンジンが非同期でエントリを読み取っている最中にエントリが削除された場合に発生する視覚的なアーティファクトを回避するため、テキストのキャッシュを修正しました。
  • Renesas RH850 におけるプラットフォーム適応を修正し、RGB332 ピクセルフォーマットで CPU フォールバックエンジンを使用するようにしました。
  • qmltocpp 修正点:
    • アイテム数の多いコンポーネントレイアウト用に生成されるコードを修正しました。
    • モジュールが自身をインポートしている場合、import ステートメントを無視するようにしました。
    • 翻訳ファイルが見つからない場合、変換関数の生成をスキップするようにしました。
  • qmlprojectexporter 修正点:
    • C++ コンパイラオプションに関連する警告。
    • Qt Safe Renderer モジュールに対して正しいURIを使用する。
  • position のプロパティを修正し、QMLから確実にアクセスできるようにしました。
  • GHS コンパイラが生成する依存ファイルの拡張子情報を修正し、Ninja が正しいファイル名を認識できるようにしました。
  • デリゲートからListView またはRepeaterモデルをリセットした際に発生していたクラッシュを修正しました。
  • fontcompiler の警告を修正し、char属性から対応するクラスター値へのマッピングを無効にしました。
  • 不要な再レイアウトを回避し、レンダリング前にキャッシュをクリアすることで、テキストのパフォーマンスを最適化しました。
  • TRAVEO T2G において、JPEG デコーダがハードコードされたメモリアドレスを使用せずに動的にメモリを割り当てていたために発生していたメモリ破損を修正しました。
  • キャッシュからエントリを削除する前にwaitUntilAsyncReadFinished() を呼び出すよう、テキストキャッシュの実装を修正しました。

新しいAPI

アプリケーション開発用API

新しいクラス

新しいメンバー関数

GeoPositionInfo クラス :

(since Qt Quick Ultralite 2.12) bool hasSpeed() const

SharedImage クラス :

(since Qt Quick Ultralite 2.12) bool maybeTexture(Qul::PlatformInterface::Texture &texture, int textureIndex = 0) const

名前空間内の新しい関数

(since Qt Quick Ultralite 2.12) bool queryResourceStorageSectionInfo(const char *resourceStorageSectionName, Qul::ResourceStorageSectionInfo *info = NULL)
(since Qt Quick Ultralite 2.12) bool validateMonotypeDataTableChecksums(Qul::MonotypeDataTables tables = MonotypeDataTables(MonotypeDataTable::AllDataTables))

新しい列挙型

(since Qt Quick Ultralite 2.12) enum class RenderHint { SafeRendering }
(since Qt Quick Ultralite 2.12) enum class MonotypeDataTable { decompositionData0, decompositionData1, decompositionData2, decompositionData3, decompositionIndex, …, AllDataTables }
(since Qt Quick Ultralite 2.12) enum class ResourceInitializationOptions { DisableAutomaticVersionChecking, AllowUnlistedResources }

新しい型エイリアス

(since Qt Quick Ultralite 2.12) RenderHints
(since Qt Quick Ultralite 2.12) MonotypeDataTables

新しい変数

(since Qt Quick Ultralite 2.12) double speed
(since Qt Quick Ultralite 2.12) uint64_t timestamp

新しいQML型

新しい QML プロパティ

QML タイプPosition

(since Qt Quick Ultralite 2.12) speed : double
(since Qt Quick Ultralite 2.12) speedValid : bool
(since Qt Quick Ultralite 2.12) timestamp : date

QML タイプQul

(since Qt Quick Ultralite 2.12) activeLanguages : list<string>

QML タイプText

(since Qt Quick Ultralite 2.12) maximumLineCount : int

プラットフォーム開発用API

新しいクラス

新しいメンバー関数

クラスDrawingEngine

(since Qt Quick Ultralite (Platform) 2.12) virtual Qul::PlatformInterface::RenderHints supportedRenderHints() const

以前のバージョンでの変更点

特定のQtライセンスの下で利用可能です。
詳細はこちらをご覧ください。