このページでは

高度なコンポーネント・プロパティの設定

Properties ビューのAdvancedLayer セクションでは、Item コンポーネントから継承され、主にアプリケーション開発者が使用するコンポーネントの、より高度なプロパティを管理できます。

プロパティの詳細セクション。

スムースサンプリングを有効にするには、Smooth を選択します。スムーズサンプリングは線形補間を使用して実行され、非スムーズサンプリングは最近傍を使用して実行されます。スムースサンプリングはパフォーマンスへの影響が少ないため、デフォルトで有効になっています。

アンチエイリアスは、画面上の曲線がより滑らかになるように使用されます。アンチエイリアシングをオンにするには、Antialising を選択します。

Baseline offset の値は、コンポーネントのベースラインの位置をローカル座標で指定します。Text コンポーネントのベースラインは、テキストを置く仮想線です。テキストを含むコントロールは通常、そのベースラインをテキストのベースラインに設定します。非テキスト・コンポーネントの場合、デフォルトのベースライン・オフセット0が使用されます。

マウスとキーボードイベントの管理

Enabled を選択して、コンポーネントがマウスとキーボードのイベントを受け取れるようにします。コンポーネントの子は、明示的にこの値を設定しない限り、この動作を継承します。

コンポーネントにアクティブなフォーカスがあることを指定するには、Focus チェックボックスを有効にし、タブ フォーカス チェーンにコンポーネントを追加するには、Focus on tab チェックボックスを有効にします。タブ フォーカス チェーンは、最初に親を訪れ、次にその子コンポーネントを定義された順序で訪れます。タブ フォーカス チェーン内のコンポーネントでTabキーを押すと、キーボード フォーカスがチェーン内の次のコンポーネントに移動します。戻るタブ(通常、Shift+Tab)を押すと、前のコンポーネントにフォーカスが移動します。

レイヤーの使用

Qt Quick は、専用のシーングラフを使用し、OpenGL ES、OpenGL、Vulkan、Metal、Direct 3DなどのグラフィックスAPIを経由してトラバースおよびレンダリングされます。従来の命令型ペイントシステムではなく、グラフィックスにシーングラフを使用することは、レンダリングするシーンをフレーム間で保持でき、レンダリングを開始する前にレンダリングするプリミティブの完全なセットを知ることができることを意味します。これにより、バッチ・レンダリングによる状態変化の最小化や、不明瞭なプリミティブの破棄など、さまざまな最適化が可能になる。

たとえば、UIに10個の項目のリストがあり、各項目に背景色、アイコン、テキストがあるとします。従来の描画テクニックを使用すると、30回の描画呼び出しと同量の状態変更が発生します。一方、シーングラフでは、すべての背景が1回の呼び出しで描画され、次にすべてのアイコンが描画され、次にすべてのテキストが描画されるようにレンダリングするプリミティブを再編成することができ、描画呼び出しの総量をわずか3回に減らすことができます。このようなバッチ処理と状態変更の削減は、ハードウェアによってはパフォーマンスを大幅に向上させることができます。

レイヤープロパティを設定できるようになるには、コンポーネントがどのようにレンダリングされるかの基本的な理解が必要です。レンダリングについては、Qt Quick Scene Graph Default Renderer で説明しています。

レイヤーのプロパティ。

コンポーネントは通常、それらが属するウィンドウに直接レンダリングされます。しかし、Layer セクションでEnabled を選択すると、コンポーネントとそのサブツリー全体を、オフスクリーンサーフェスに委譲することができます。オフスクリーン・サーフェス(テクスチャ)のみがウィンドウに描画されます。詳細については、Item Layers を参照してください。

レイヤーが有効な場合、Effect フィールドで選択したコンポーネントと組み合わせて、コンポーネントをテクスチャとして直接使用できます。通常、このコンポーネントはソーステクスチャが指定されたシェーダエフェクトである必要があります。

コンポーネントがレイヤーのオフスクリーンサーフェスをエフェクトに正しく渡せるように、Sampler name フィールドはテクスチャのソースプロパティに設定されます。

コンポーネントのレイヤーが有効になると、シーングラフは幅×高さ×4に等しいメモリをGPUに割り当てます。メモリに制約のある構成では、大きなレイヤーは注意して使用する必要があります。また、レイヤーを使用するコンポーネントは、レンダリング中にバッチ処理できません。つまり、多くのレイヤーコンポーネントを持つシーンでは、パフォーマンスに問題が生じる可能性があります。

デフォルトでは、シーングラフ レンダラーが使用中で、基礎となるグラフィックス API がサポートしている場合、ウィンドウ全体でマルチサンプリングが有効になります。Samples フィールドに値を設定することで、シーンの一部に対してマルチサンプリングを要求することができます。こうすることで、マルチサンプリングは特定のサブツリーにのみ適用され、大幅なパフォーマンス向上につながります。その場合でも、マルチサンプリングを有効にすると、ハードウェアやドライバに依存した性能とメモリコストが発生するため、レイヤーのサイズに関係なく、コストが高くなる可能性があります。マルチサンプルレンダーバッファとフレームバッファブリットのサポートが利用可能でない場合、値は黙って無視されます。

Format フィールドの値は、テクスチャの内部 OpenGL フォーマットを指定します。OpenGLの実装によっては、テクスチャのメモリを節約できるかもしれません。ただし、RGBAlpha の値は、基盤となるハードウェアとドライバがサポートしていない可能性があるため、注意して使用してください。

Texture mirroring フィールドでは、生成された OpenGL テクスチャを x 軸または y 軸に沿って反転してミラーリングするかどうかを指定します。カスタムミラーリングは、生成されたテクスチャがカスタムシェーダによって直接アクセスされる場合に便利です。レイヤー コンポーネントにエフェクトが指定されていない場合、ミラーリングはコンポーネントの UI 表現には影響しません。

Smooth が選択されている場合、コンポーネントはスケーリングに線形補間を使用します。ダウンサンプリングにミップマップを使用するには、Mipmap を選択します。ミップマッピングは、ダウンスケールされたコンポーネントの視覚的な品質を向上させる可能性があります。単一のImage コンポーネントをミップマッピングするには、代わりにイメージプロパティで Mipmap を選択します。

コンポーネントのサイズと異なるサイズのテクスチャを使用するには、Texture size フィールドでテクスチャの幅と高さを指定します。

Wrap mode は、テクスチャに関連する OpenGL ラップモードを定義します。テクスチャをエッジにクランプしたり、水平方向と垂直方向に繰り返すことができます。一部の OpenGL ES 2 実装では、非 2 乗テクスチャのRepeat ラップモードがサポートされていないことに注意してください。

ハウツーも参照してください: Qt Quick UIのデザインQt Quick UIのデザイン Qt Quick UIのデザインも参照してください。

Copyright © The Qt Company Ltd. and other contributors. 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.