C
既知の問題または制限
以下は、Qt for MCUs 2.12.0 における既知の問題のリストです。これらの問題の回避策や状況については、Qt サポートにお問い合わせください。
ユーザーから報告されたすべての問題を見るには、Qt for MCUs 公開バグトラッカーをご覧ください。
Qt Quick ウルトラライト
- Qt Quick Ultralite はQt Quick のサブセットであり、MCU 以外のプラットフォームで利用可能なすべての基本 QML 型と制御 QML 型を提供していません。詳しくはQt Quick Ultralite vsQt Quickおよび Qt Quick Ultralite Controls とQt Quick Controlsの違いを参照してください。
- Static Font Engine を使用している場合、Text タイプは複雑なテキストレイアウトを必要とする unicode シーケンスを正しくレンダリングしません。複雑なテキストにはMonotype Spark フォントエンジンを使用してください。
- SequentialAnimation およびParallelAnimation は、"on" 構文を使用してプロパティに割り当てられても自動的に開始しません。アニメーションを開始するには、running プロパティを
trueに明示的に設定します。 - font.pointSize は画面の DPI を尊重しません。代わりにfont.pixelSize 。
- デフォルト状態にはいくつかの制限があります。詳細については、デフォルト状態の制限を参照してください。
- Itemのstate プロパティへのバインディングは、ターゲット状態がwhen 条件を使用していない場合にのみ機能します。式を使用して状態を変更するには、2 つの方法のいずれかを使用する必要があります。
- States 同じアイテムに複数のPropertyChanges またはAnchorChanges ターゲット アンカー プロパティがある場合、期待どおりに動作しません。代わりに単一のPropertyChanges を使用してください。
- StateGroup はトップレベル・オブジェクトとして宣言しなければなりません。これを階層の他の場所に置くとエラーになります。
- アンカーを未定義に設定しても、以前の位置とサイズのバインディングは復元されません。
- トランジション内のRotationAnimation は、回転以外のプロパティに適用される場合があります。代わりにPropertyAnimation::properties を使用してください。
- ListView 内のデリゲートはすべて同じサイズでなければなりません。サイズは明示的に指定する必要があり、動的に変更することはできません。
onPropertyChangedはグループ化されたプロパティには対応していません。- color value accessors へのバインディングはサポートされていません。
- transformed アイテムでのclip プロパティの使用はサポートされていません。
- Transforms アイテムの子には適用されません。代わりに、各子に対して個別にトランスフォームを設定します。
- AnimatedSprite には
finishBehaviorプロパティはなく、アニメーションが完了すると、最終フレームに残ります。Qt Quick のようなデフォルトの動作を提供したい場合は、finished シグナルとcurrentFrame プロパティを使用してください。 - AnimatedSprite とAnimatedSpriteDirectory のframeDuration プロパティは、各フレーム間の正確な継続時間を保証するものではありません。与えられた時間間隔の後に次のフレームがレンダリングされるべきであることを意味するだけです。プラットフォームの作業負荷が時間間隔に影響する可能性があります。
- 同じ列挙体を持つ列挙体の定義はサポートされていません。詳細については、enumeration を参照してください。
import ".."のようにQMLで相対インポートを使用すると、ビルド時に以下のようなエラーが発生し、ビルドに失敗することがあります:「pragma Singleton'を持つ型が非シングルトンとしてインポートされています。QMLで定義されたシングルトンはモジュールの一部でなければなりません。ビルドに失敗しないためには、QMLで定義されたシングルトンがモジュールに属していることを確認してください。- Qul::ListModel<std::string> は空文字列を返します。この問題を避けるためには、次の例のように型を struct で囲んでください:
struct ModelData { std::string text; }; class MyModel: public Qul::ListModel<ModelData> { ... };
- C++で定義され、InterfaceFiles.filesでエクスポートされたQMLオブジェクトは、Loaderでは使用できません。
Loader { source: "MyCppType.qml" // ^ error: File MyCppType.qml does not exist. }この問題を回避するには、QMLファイルを作成し、そこでMyCppTypeを使用し、ソースとしてQMLファイル名を使用します。
// MyQmlType.qml Item { // Note: The root item has to be a visual type! MyCppType { // ... } }
Loader { source: "MyQmlType.qml" } - コンポーネントの使い方。
コンポーネントのルートアイテムから 'parent' アクセサをRepeater またはListView で使用すると、"Referencing component 'parent' from unsupported context" というエラーが表示されます。
これは動作しません:
Component { id: myComp Rectangle { width: parent.width height: parent.height / 2 color: "pink" } } Repeater { model: 1 // Referencing Component via id where the root item uses parent.* accessor delegate: myComp }回避策としては、'parent' アクセサの代わりに参照オブジェクトの 'id' を使用することです。
Component内部でアンカーを使用する場合、他にもさまざまな問題があります。生成されたcppコードがコンパイルできない場合は、問題のあるアンカーバインディングを使わずに同じロジックを書いてみてください。根本的な問題はわかっていますが、このリリースではまだ修正されていません。
- QMLの値型オブジェクトの属性が読み取り可能であるが、書き込み不可能である。これは以下のQML型とその属性に適用されます:
- point
xとy - rect:
xywidthheight - color:
rgおよびb - matrix4x4:
m11からm44 - geoCoordinate:
latitudeおよびlongitude
- point
- 表示回転の問題:
- Linuxプラットフォームでは、PlatformContext::presentFrame()が不正な矩形を取得し、予期しない結果につながる。PlatformContext::presentFrame() に渡される矩形を無視するプラットフォームでは問題ありません。
- ルート QML アイテムが画面解像度より小さい場合、テキスト描画が正しく動作しません。
Qt Creator
- QML デバッグはサポートされていません。
- QML プロファイリングはサポートされていません。
Qt Design Studio
- デバイス上でのプレビューはサポートされていません。MCU ボード上でデザインをプレビューするには、自動生成された CMake プロジェクトを使用し、Qt Creator を使用してコンパイルしてください。
プラットフォーム
Renesas プラットフォーム
Renesas RH850-D1M1A
以下は、Renesas RH850-D1M1A ハードウェアの既知の問題または制限のリストです。
- Qt Quick Ultralite 2.12.0は、
enterSleepModeがこのプラットフォームに実装されていないため、低CPUパワーモードになりません。フレームがレンダリングされず、他のタスクが実行されていない場合、Qt Quick Ultraliteは次のフレームがレンダリングされるか、他のタスクがCPU時間を必要とするまでループします。
NXP プラットフォーム
NXP i.MXRT1170
以下は、NXP i.MXRT1170ハードウェアにおける既知の問題または制限のリストです。
- Qt Quick Ultralite 2.12.0が低CPUパワーモードに入らない。通常の状態では、Qt Quick Ultraliteは、アプリケーションUIを更新しないか、処理する新しいタッチイベントがない場合に、このモードに入ります。低CPUパワーモードはデバッグやフラッシングの妨げになるため、このプラットフォームでは無効になっています。
- リファレンスプラットフォームのポートには、ハードウェアレイヤーのサポートに制限があります。
- Monotype Spark フォント・エンジンを使用したテキストは、グリフ・アドレスがアラインされていないため、正しくレンダリングされないことがある。
STM32 プラットフォーム
SDRAM 帯域幅が限られているため、CPU で SDRAM にアクセスすると、LTDC FIFO Underrun が原因で、フレームバッファがディスプレイコントローラによってスキャンされている間にビジュアルアーチファクトが発生することがあります。LTDC FIFO Underrun UI 要素が多く、アニメーションが多いアプリケーションでは、ビジュアルグリッチの原因となるエラーが発生することがあります。UIを簡素化する以外に、Qt Quick Ultraliteコア・ライブラリに別のビルド・タイプを使用することを検討してください。例えば、MinSizeRel の代わりにDebug やRelease を使用します。
stm32h750b-discovery
以下は、STM32H750B-DISCOVERY ハードウェアにおける既知の問題または制限のリストです。
- SDKバージョン1.12.1のみがサポートされています。
その他
- GNU Arm Embedded Toolchain のバグ(https://bugs.launchpad.net/gcc-arm-embedded/+bug/1747966)を回避するため、すべてのオブジェクト・ファイルとライブラリがリンカ・グループ(
--start-group/--end-groupを使用)でldに渡されます。さらに、ライブラリはアプリケーション・オブジェクト・ファイルの前にリンカに渡されますが、これはデフォルトの動作とは逆です。 - GNU Arm GDB 10.3-2021.10を使用してターゲット上でデバッグすると、クラッシュすることがあります (
internal-error: virtual memory exhausted)。GNU Arm GCC 10を使用する場合、lib/cmake/Qul/toolchain/armgcc.cmakeの-g3オプションを-gに置き換えるか、ツールチェインとしてGNU Arm GCC 9を使用することで、クラッシュを回避できます。 - リソース・システムのUnicodeファイル名は、Windows上でビルド・エラーを引き起こすかもしれません。NinjaとCMakeの適切なバージョンを使用することで解決できます。バンドルされているツールはUnicodeファイル名をサポートすることが確認されています。
- Linux上で、
g++-12を使わずにgcc-12をインストールした場合、インクルードパスにGCCヘッダがあると、qmlinterfacegeneratorを実行したときにC++ヘッダ('cstdint' file not found)が欠落します。この問題を解決するには、gcc-12を削除するか、g++-12をインストールしてください。