このページでは

C

視覚的な親

Qt Quick Ultralite でビジュアルシーンを作成する際は、「ビジュアル親」という概念を理解することが重要です。

Qt Quick Ultraliteにおけるビジュアル親の概念は、QObject の親階層におけるオブジェクト親の概念とは別物ですが、関連しています。 すべてのQMLオブジェクトにはオブジェクト親があり、これはオブジェクトが宣言されたオブジェクト階層によって決定されます。QtQuick モジュールを使用する場合、Item 型はこのモジュールが提供するすべてのビジュアルアイテムの基底型であり、アイテムのparent プロパティによって定義される追加のビジュアル親という概念を提供します。すべてのアイテムにはビジュアル親があります。

あるアイテムを別のアイテムの子として宣言しても、子アイテムが親アイテム内に収まるように自動的に適切な位置やサイズに調整されるわけではありません。一部のQML型には、子アイテムの位置決めに影響を与える組み込みの挙動が備わっている場合があります。 たとえば、Row オブジェクトは、その子要素を自動的に水平配列に再配置しますが、これらはその型固有の実装によって強制される挙動です。さらに、親アイテムは、そのclip プロパティがtrue に設定されていない限り、子要素を親の視覚的な境界内に収まるように自動的にクリップすることはありません。

重要: Qt Quick Ultralite では、parent プロパティは読み取り専用として実装されている点にご注意ください 。つまり、項目の視覚的な親を変更するQt Quick コードは、Qt Quick Ultralite ではコンパイルされません。

項目の座標

アイテムの座標は視覚的な親を基準としているため、視覚階層の変更によって影響を受ける可能性があります。詳細については、「視覚座標」を参照してください。

重ね合わせ順序

Qt Quick Ultraliteのアイテムは、衝突が発生した場合にどのアイテムを上に描画するかを決定するために、再帰的な描画アルゴリズムを使用します。一般的に、アイテムは作成された順序(またはQMLファイルで指定された順序)に従って、親アイテムの上に描画されます。したがって、次の例では、青い長方形が緑の長方形の上に描画されます。

Rectangle {
    color: "#272822"
    width: 320
    height: 480

    Rectangle {
        y: 64
        width: 256
        height: 256
        color: "green"
    }

    Rectangle {
        x: 64
        y: 172
        width: 256
        height: 256
        color: "blue"
    }
}

暗い背景の上に、緑色の長方形と重なり合う青い長方形が描かれており、青い長方形が上に描かれていることが示されている。

このアルゴリズムは視覚的なアイテム階層を再帰的に処理するため、緑色の長方形の子要素も、青い長方形の下、および青い長方形の子要素の下に描画されます。

重ね合わせ順序は、Item::z プロパティで調整できます。Z値が0未満の場合、そのアイテムは親アイテムの下に配置されます。また、Z値が指定されている場合、兄弟アイテムはZ値の順に重ねられます(同値の場合は作成順で決定されます)。

Z値は、兄弟要素および親要素との比較における重ね合わせ順序にのみ影響します。 親アイテムより上位にルートを持つサブツリーによって隠れてしまうアイテムがある場合、そのアイテムにどのような z 値を指定しても、そのサブツリーより上に配置されるよう重ね順を上げることはできません。そのアイテムを他のサブツリーより上に配置するには、階層の上位にある z 値を変更するか、視覚的なアイテムの階層を再編成する必要があります。

Rectangle {
    color: "#272822"
    width: 320
    height: 480

    Rectangle {
        y: 64
        z: 1
        width: 256
        height: 256
        color: "green"

        Rectangle {
            x: 192
            y: 64
            z: 2000
            width: 128
            height: 128
            color: "red"
        }
    }

    Rectangle {
        x: 64
        y: 192
        z: 2
        width: 256
        height: 256
        color: "blue"
    }
}

暗い背景の上に、3つの重なり合った長方形(青、赤、緑)が描かれており、赤と緑の長方形がどちらも青の長方形の下に重なっていることが示されています。

上記の例では、赤い長方形は Z 値が高いにもかかわらず、青い長方形の下に配置されています。これは、赤い長方形が緑の長方形の子であり、緑の長方形が青い長方形の兄弟要素であるためです。 緑色の四角形のz値は青色の四角形よりも低いため、緑色の四角形とそのすべての子要素は、青色の四角形の下に配置されます。

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