このページについて

C

既知の問題や制限事項

以下は、Qt for MCUs 2.12.2における既知の問題の一覧です。これらの問題の回避策や状況に関する情報については、Qtサポートまでお問い合わせください。

ユーザーから報告されたすべての問題を確認するには、Qt for MCUs の公開バグトラッカーをご覧ください。

Qt Quick Ultralite

  • Qt Quick UltraliteはQt Quick のサブセットであるため、非MCUプラットフォームで利用可能なすべての基本およびコントロールQMLタイプを提供しているわけではありません。詳細については、「Qt Quick Ultralite vsQt Quick」およびQt Quick Ultralite ControlsとQt Quick Controlsの違い」を参照してください。
  • Text 型は、Static Font Engine を使用している場合、複雑なテキストレイアウトを必要とする Unicode シーケンスを正しくレンダリングしません。複雑なテキストにはMonotype Spark フォントエンジンを使用してください。
  • SequentialAnimation また、ParallelAnimation は、「on」構文を使用してプロパティに割り当てた場合、自動的に開始されません。アニメーションを開始するには、running プロパティを明示的にtrue に設定してください。
  • font.pointSize 画面のDPIは考慮されません。代わりにfont.pixelSize を使用してください。
  • デフォルトの状態にはいくつかの制限があります。詳細については、「デフォルトの状態の制限」を参照してください。
  • Itemのstate プロパティへのバインディングは、ターゲット状態がwhen 条件を使用していない場合にのみ機能します。式を使用して状態を変更するには、次の2つの方法のいずれかを使用してください。
  • States 同じアイテムに対して複数のPropertyChangesAnchorChanges をターゲットアンカープロパティとして指定しても、期待どおりに動作しません。代わりに、単一のPropertyChanges を使用してください。
  • StateGroup はトップレベルオブジェクトとして宣言する必要があります。階層内の他の場所に配置するとエラーになります。
  • アンカーを `undefined` に設定しても、以前の位置やサイズのバインディングは復元されません。
  • 遷移中のRotationAnimation は、回転以外のプロパティには適用されない場合があります。代わりにPropertyAnimation::properties を使用してください。
  • ListView 内のすべてのデリゲートは、同じサイズでなければなりません。サイズは明示的に指定する必要があり、動的に変更することはできません。
  • onPropertyChanged グループ化されたプロパティではサポートされていません。
  • color value accessors へのバインディングはサポートされていません。
  • transformed アイテムでのclip プロパティの使用はサポートされていません。
  • Transforms アイテムに対する `transform` は、その子要素には適用されません。代わりに、各子要素に対して個別に `transform` を設定してください。
  • AnimatedSprite finishBehavior プロパティは提供されておらず、アニメーションが完了しても最終フレームのままになります。 と同様のデフォルトの挙動を実現したい場合は、 シグナルと プロパティを使用してください。Qt Quick finished currentFrame
  • AnimatedSprite およびAnimatedSpriteDirectoryframeDuration プロパティは、各フレーム間の正確な持続時間を保証するものではありません。これは、指定された時間間隔後に次のフレームがレンダリングされるべきであることを意味するだけです。プラットフォームの負荷によって、この時間間隔が影響を受ける可能性があります。
  • 同じ列挙子を持つ列挙型の定義はサポートされていません。詳細については、enumeration を参照してください。
  • QML でimport ".." のような相対インポートを使用すると、ビルドが失敗し、次のエラーが発生する可能性があります:「'pragma Singleton' が指定された型が、シングルトンとしてインポートされていません。 QML で定義されたシングルトンは、モジュールの一部でなければなりません」。ビルドの失敗を防ぐには、QML シングルトンが定義済みのモジュールに属していることを確認してください。
  • Qul::ListModel<std::string> は空の文字列を返します。この問題を回避するには、次の例に示すように、その型を構造体でラップしてください:
    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"
    }
  • コンポーネントの使用方法。

    Component のルートアイテムにある「parent」アクセサを、Repeater またはListView と共に使用すると、「サポートされていないコンテキストからコンポーネント 'parent' を参照しています」というエラーが表示されます。

    以下は動作しません:

    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型およびそれらの属性に適用されます:
  • 表示の回転に関する問題:
    • 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 このプラットフォームではenterSleepMode が実装されていないため、Ultralite 2.12.2はCPU低消費電力モードに入りません。フレームのレンダリングが行われておらず、他のタスクも実行されていない場合、Qt Quick Ultraliteは、次のフレームのレンダリングが必要になるか、別のタスクがCPU時間を必要とするまでループを続けます。

NXP プラットフォーム

NXP i.MXRT1170

以下は、NXP i.MXRT1170 ハードウェアに関する既知の問題または制限の一覧です。

  • Qt Quick Ultralite 2.12.2 は、低 CPU 電力モードに入らない。通常、Qt Quick Ultralite は、アプリケーションの UI が更新されていない場合や、処理すべき新しいタッチイベントがない場合に、このモードに入る。このプラットフォームでは、デバッグやフラッシュの妨げとなるため、低 CPU 電力モードは無効になっている。
  • リファレンスプラットフォームへの移植版には、ハードウェアレイヤーのサポートに制限があります。
  • Monotype Spark フォントエンジンを使用したテキストは、グリフアドレスの位置ずれにより、正しくレンダリングされない場合があります。

STM32プラットフォーム

SDRAMの帯域幅が限られているため、ディスプレイコントローラがフレームバッファをスキャンしている最中にCPUからSDRAMにアクセスすると、LTDC FIFOアンダーランにより視覚的なアーティファクトが発生する可能性があります。UI要素が多く、負荷の高いアニメーションを含むアプリケーションでは、LTDC FIFO Underrun エラーが発生し、視覚的な不具合が生じる場合があります。 UIを簡素化するほか、Qt Quick のUltraliteコアライブラリについて、別のビルドタイプを使用することを検討してください。例えば、MinSizeRel の代わりに、DebugRelease を使用します。

STM32H750B-DISCOVERY

以下は、STM32H750B-DISCOVERY ハードウェアに関する既知の問題や制限事項の一覧です。

  • サポートされているのは SDK バージョン 1.12.1 のみです。

Infineon プラットフォーム

Infineon PSOC Edge E84

以下は、Infineon PSOC™ Edge E84 ハードウェアに関する既知の問題または制限の一覧です。

  • プラットフォームポートは双線形フィルタリングを使用しており、背景が再描画されない場合、変換された画像にレンダリングアーティファクトが発生する可能性があります。これは、VGLite ドライババージョン 4.0 以降に存在するバグによるものです。この問題を回避するには、プラットフォームポートを修正してポイントフィルタリングを使用するか、変換された画像の背景を再描画してください。

Nuvotonプラットフォーム

Nuvoton Gerda-4L

以下は、Nuvoton Gerda-4L ハードウェアに関する既知の問題または制限事項の一覧です。

  • フラッシュ用に IAR I-jet を実行するには、cspybat ツールを使用しますが、フラッシュ完了後は手動でこのツールを終了する必要があります。
  • Shapes (vector graphics) はサポートされていません。これは、フォールバック CPU 描画エンジンが、使用されているフレームバッファ形式と互換性がないためです。
  • デバッガが接続された状態で電源を入れ直すと、アプリケーションが起動しません。ボードの電源を入れ直す場合は、デバッガを取り外してください。
  • 小さい alpha8 画像(16x16 未満)では、画像の周囲にブレンドによるアーティファクトが生じる場合があります。

その他

  • 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 をインストールしている場合、qmlinterfacegenerator を実行すると、インクルードパス内の GCC ヘッダーにより C++ ヘッダーが見つからない('cstdint' file not found )というエラーが発生します。この問題を解決するには、gcc-12 を削除するか、g++-12 をインストールしてください。

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