使用例 - QMLにおける視覚的要素

矩形タイプ

最も基本的なビジュアルのために、Qt QuickではRectangle タイプで矩形を描画することができます。これらの矩形は色や垂直グラデーションで着色することができます。Rectangle 型は矩形に境界線を描くこともできます。

矩形以外のカスタムシェイプを描画するには、Canvas を参照してください。

import QtQuick

Item {

    width: 320
    height: 480

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

    // This element displays a rectangle with a gradient and a border
    Rectangle {
        x: 160
        y: 20
        width: 100
        height: 100
        radius: 8 // This gives rounded corners to the Rectangle
        gradient: Gradient { // This sets a vertical gradient fill
            GradientStop { position: 0.0; color: "aqua" }
            GradientStop { position: 1.0; color: "teal" }
        }
        border { width: 3; color: "white" } // This sets a 3px wide black border to be drawn
    }

    // This rectangle is a plain color with no border
    Rectangle {
        x: 40
        y: 20
        width: 100
        height: 100
        color: "red"
    }
}

Imageタイプ

Qt Quickには、画像を表示するためのImage型があります。Imageタイプにはsource プロパティがあり、その値にはリモートまたはローカルのURL、またはコンパイルされたリソースファイルに埋め込まれた画像ファイルのURLを指定することができます。

// This element displays an image. Because the source is online, it may take some time to fetch
Image {
    x: 40
    y: 20
    width: 61
    height: 73
    source: "http://codereview.qt-project.org/static/logo_qt.png"
}

より複雑な画像については、Imageに似た他の型があります。BorderImage 、グリッドスケーリングで画像を描画します。ボーダーとして使用される画像に適しています。AnimatedImage 、アニメーション化された.gifおよび.mng画像を再生します。AnimatedSpriteSpriteSequence 、アニメーション化されていない画像形式で隣接して保存された複数のフレームで構成されるアニメーションを再生します。

ビデオファイルやカメラデータの表示については、Qt Multimediaモジュールを参照してください。

共有ビジュアルプロパティ

Qt Quickで提供されるすべてのビジュアルアイテムは、Item タイプに基づいています。Item タイプは、ビジュアルアイテムに共通の属性セット(不透明度や変形属性など)を提供します。

不透明度と可視性

Qt Quick が提供する QML オブジェクトタイプは、opacity をビルトインでサポートしています。不透明度はアニメーションさせることができ、透明な状態への遷移や透明な状態からの遷移をスムーズに行うことができます。Visibility もvisible プロパティでより効率的に管理できますが、アニメーションはできません。

import QtQuick

Item {

    width: 320
    height: 480

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

    Item {
        x: 20
        y: 270
        width: 200
        height: 200
        MouseArea {
            anchors.fill: parent
            onClicked: topRect.visible = !topRect.visible
        }
        Rectangle {
            x: 20
            y: 20
            width: 100
            height: 100
            color: "red"
        }
        Rectangle {
            id: topRect
            opacity: 0.5

            x: 100
            y: 100
            width: 100
            height: 100
            color: "blue"
        }
    }
}

トランスフォーム

Qt Quick タイプには、トランスフォームのサポートが組み込まれています。ビジュアルコンテンツを回転または拡大縮小したい場合は、Item::rotation またはItem::scale プロパティを設定します。これらはアニメーションさせることもできます。

import QtQuick

Item {

    width: 320
    height: 480

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

    Rectangle {
        rotation: 45 // This rotates the Rectangle by 45 degrees
        x: 20
        y: 160
        width: 100
        height: 100
        color: "blue"
    }
    Rectangle {
        scale: 0.8 // This scales the Rectangle down to 80% size
        x: 160
        y: 160
        width: 100
        height: 100
        color: "green"
    }
}

より複雑な変形については、Item::transform プロパティを参照してください。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。