Qt Quick 例 - アイテムごとの可変リフレッシュレート

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

回転されたQtロゴと、FPSカウンターおよびフレームレート調整スライダー

この例では、Item Layers の`live`プロパティを使用して、クイックアイテムに対して可変かつ独立したリフレッシュレートを実現する方法を示しています。UIの特定の部分が毎フレーム再描画される必要はないものの、内部的な更新が必要な場合、これによりパフォーマンスが大幅に向上します。 ほとんどの場合静的な部分や、常に滑らかに実行される必要のないアニメーションを描画することは、リソースの無駄遣いとなります。このプロパティを使用することで、ユーザーはアイテムが描画されるタイミングを制御できます。

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

この例では、FrameAnimation を使用してアイテムのレンダリング頻度を制御しています。例えば、2フレームに1回だけレンダリングしたい場合などに便利です。タイマーやその他の仕組みを使用してフラグを切り替える方法も有効です。

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

剰余演算子とスライダーを使って値を設定することで、Qtロゴのレンダリング頻度を動的に変更できます。

サンプルプロジェクト @ code.qt.io

© 2026 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.