Qt Quick 例 - 項目 可変リフレッシュ・レート

Qt Quick の例では、UI の特定の部分に可変リフレッシュ・レートを設定する方法を示します。

この例では、Item Layers の live プロパティを使用して、Quick アイテムに対して可変かつ独立したリフレッシュ・レートを取得する方法を示します。これは、UIの特定の部分が毎フレーム再レンダリングされる必要はないが、まだ内部更新が必要な場合に、パフォーマンスを大幅に向上させることができます。ほとんどの時間静止している部分や、常にスムーズに動作する必要のないアニメーションを描画することは、リソースの無駄遣いです。このプロパティは、アイテムが描画されるタイミングをユーザーがコントロールできるようにします。

注: Item Layers を使用すると、レイヤー化されたアイテムのサブツリーのサイズによっては、別々のレンダー ターゲット(テクスチャ)を使用するため、パフォーマンスが低下する場合があります。アプリケーション設計者は、レイヤーを使用するメリットが潜在的なデメリットを上回ることを確認するために、常に影響を評価する必要があります。

この例では、FrameAnimation を使用して、アイテムのレンダリング頻度を制御しています。例えば、2フレームごとにレンダリングしたい場合に便利です。タイマーのようなものを使ってフラグを切り替えることもできます。

FrameAnimation {
  id: frameAnimation
  property real fps: smoothFrameTime > 0 ? (1.0 / smoothFrameTime) : 0
  running: true
}

上記のスニペットでは、fps プロパティは視覚的なデモンストレーションのためだけに存在しています。

このアイテムには、layer.enabled が true であることが必要で、下のスニペットに示すように、layer.live の状態に応じてアイテムがレンダリングされます。

Item {
    id: qt_logo
    width: 230
    height: 230
    anchors.fill: parent
    anchors.topMargin: 125
    layer.enabled: true
    layer.live: slider.value > 0 && frameAnimation.currentFrame % slider.value == 0

modulo 演算子と値を設定するスライダーを使用することで、Qt ロゴがレンダリングされる頻度を動的に変更することができます。

プロジェクト例 @ code.qt.io

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.