このページでは

マテリアルスタイル

マテリアルスタイルは、Googleのマテリアルデザインガイドラインに基づいています。詳細...

インポート文: import QtQuick.Controls.Material
対応バージョン: Qt 5.7

関連プロパティ

関連メソッド

  • colorcolor(列挙型 predefined, 列挙型 shade)

詳細な説明

「Material」スタイルは、GoogleのMaterial Designガイドラインに基づいています。これにより、プラットフォームやデバイスのサイズを問わず、統一されたユーザー体験を実現します。

マテリアルスタイルのライトテーマにおけるコントロールのギャラリー

Material スタイルのライトテーマ。

マテリアルスタイルのダークテーマにおけるコントロールギャラリー

Materialスタイルのダークテーマ。

Material スタイルでアプリケーションを実行するには、「 Qt Quick コントロールでのスタイルの使用」を参照してください。

注: Materialスタイルは 、Android ネイティブのスタイルではありません。Material スタイルは、Google の Material Design ガイドラインに準拠した、Qt Quick Controls による 100% クロスプラットフォームなスタイル実装です。このスタイルはどのプラットフォームでも動作し、どこでもほぼ同じ外観になります。利用可能なシステムフォントやフォントレンダリングエンジンの違いにより、若干の差異が生じる場合があります。

注: Material Designガイドラインは随時変更されるため 、ガイドラインとの整合性を保つために、このスタイルではパディングやフォントの値などが変更される場合があります。

カスタマイズ

Material スタイルでは、いくつかのカスタマイズ可能な属性がサポートされています。これらの属性の一部は、fonts と同様に、子要素に対してpropagate されます:

テーマと浮き出し表示の属性を持つ、マテリアルスタイルのボタン

残りの属性は子要素には伝播しません:

次の例では、ウィンドウと3つのラジオボタンすべてが、紫色のアクセントカラーを使用したダークテーマで表示されます:

import QtQuick
import QtQuick.Controls
import QtQuick.Controls.Material

ApplicationWindow {
    visible: true

    Material.theme: Material.Dark
    Material.accent: Material.Purple

    Column {
        anchors.centerIn: parent

        RadioButton {
            text: qsTr("Small")
        }
        RadioButton {
            text: qsTr("Medium")
            checked: true
        }
        RadioButton {
            text: qsTr("Large")
        }
    }
}

カスタム紫のアクセントを施したマテリアルスタイルのコントロール

QML で属性を指定するほか、環境変数や設定ファイルを介して一部の属性を指定することも可能です。QML で指定された属性は、他のすべての指定方法よりも優先されます。

設定ファイル

変数説明
ThemeデフォルトのMaterialテーマを指定します。値には、利用可能なテーマのいずれかを指定できます(例:"Dark" )。
VariantMaterialのバリアントを指定します。Material Designには、タッチデバイス向けに設計された「normal」バリアントと、デスクトップ向けの「dense」バリアントの2種類があります。「dense」バリアントでは、コントロールやフォントのサイズが小さくなります。

値として、"Normal" または"Dense" を指定できます。

AccentMaterialのデフォルトのアクセント色を指定します。値は任意のcolor を指定できますが、"Teal" などの、あらかじめ定義されたMaterialカラーのいずれかを使用することを推奨します。
PrimaryMaterialのデフォルトのプライマリカラーを指定します。値は任意のcolor を指定できますが、"BlueGrey" などの事前定義されたMaterialカラーのいずれかを使用することを推奨します。
ForegroundMaterialのデフォルトのフォアグラウンド色を指定します。値は任意のcolor に設定できますが、"Brown" など、あらかじめ定義されたMaterialの色を使用することを推奨します。
BackgroundMaterialのデフォルトの背景色を指定します。値としては、任意のcolor 、または"Grey"などの定義済みのMaterialカラーのいずれかを指定できます。

設定ファイルの詳細については、「Qt Quick コントロール設定ファイル」を参照してください。

環境変数

変数説明
QT_QUICK_CONTROLS_MATERIAL_THEMEデフォルトのMaterialテーマを指定します。値には、利用可能なテーマのいずれかを指定できます(例:"Dark" )。
QT_QUICK_CONTROLS_MATERIAL_VARIANTMaterialのバリアントを指定します。Material Designには、タッチデバイス向けに設計された通常バリアントと、デスクトップ向けの高密度バリアントの2種類があります。高密度バリアントでは、コントロールやフォントのサイズが小さくなります。

値として、"Normal" または"Dense" を指定できます。

QT_QUICK_CONTROLS_MATERIAL_ACCENTMaterialのデフォルトのアクセント色を指定します。値は任意のcolor に設定できますが、"Teal"などの事前定義されたMaterialカラーのいずれかを使用することを推奨します。
QT_QUICK_CONTROLS_MATERIAL_PRIMARYMaterialのデフォルトのプライマリカラーを指定します。値は任意のcolor に設定できますが、"BlueGrey" などの事前定義されたMaterialカラーのいずれかを使用することを推奨します。
QT_QUICK_CONTROLS_MATERIAL_FOREGROUNDMaterialのデフォルトの前景色を指定します。値は任意のcolor に設定できますが、"Brown" などの、あらかじめ定義されたMaterialカラーのいずれかを使用することを推奨します。
QT_QUICK_CONTROLS_MATERIAL_BACKGROUNDMaterialのデフォルトの背景色を指定します。値としては、任意のcolor 、または"Grey"などの定義済みのMaterialカラーのいずれかを指定できます。

サポートされている環境変数の完全なリストについては、『Qt Quick コントロールのサポートされている環境変数』を参照してください。

依存関係

Material スタイル固有の属性を利用するには、Material スタイルを別途インポートする必要があります。なお、Material スタイルへの参照の有無にかかわらず、同じアプリケーションコードは他のどのスタイルでも実行されます。Material スタイル固有の属性は、アプリケーションが Material スタイルで実行された場合にのみ効果を発揮します。

常に読み込まれるQMLファイルにMaterialスタイルがインポートされている場合、アプリケーションがどのスタイルで実行されても正常に動作させるためには、Materialスタイルをアプリケーションと共にデプロイする必要があります。ファイルセレクタを使用することで、スタイルへのハードな依存関係を作成することなく、スタイル固有の調整を適用することができます。

定義済みのMaterialカラー

プライマリカラーとアクセントカラーは任意のcolor に設定できますが、Materialスタイルのパレット全体と調和するように設計された、あらかじめ定義された色のいずれかを使用することをお勧めします:

利用可能な事前定義済み色:

定数説明
Material.Red
#F44336
Material.Pink
#E91E63(デフォルトのアクセント色)
Material.Purple
#9C27B0
Material.DeepPurple
#673AB7
Material.Indigo
#3F51B5 (デフォルトのプライマリ)
Material.Blue
#2196F3
Material.LightBlue
#03A9F4
Material.Cyan
#00BCD4
Material.Teal
#009688
Material.Green
#4CAF50
Material.LightGreen
#8BC34A
Material.Lime
#CDDC39
Material.Yellow
#FFEB3B
Material.Amber
#FFC107
Material.Orange
#FF9800
Material.DeepOrange
#FF5722
Material.Brown
#795548
Material.Grey
#9E9E9E
Material.BlueGrey
#607D8B

ダークテーマが有効になっている場合、デフォルトでは、あらかじめ定義された色の異なる色合いが使用されます:

定数説明
Material.Red
#EF9A9A
Material.Pink
#F48FB1(デフォルトのアクセント色)
Material.Purple
#CE93D8
Material.DeepPurple
#B39DDB
Material.Indigo
#9FA8DA (デフォルトのプライマリ)
Material.Blue
#90CAF9
Material.LightBlue
#81D4FA
Material.Cyan
#80DEEA
Material.Teal
#80CBC4
Material.Green
#A5D6A7
Material.LightGreen
#C5E1A5
Material.Lime
#E6EE9C
Material.Yellow
#FFF59D
Material.Amber
#FFE082
Material.Orange
#FFCC80
Material.DeepOrange
#FFAB91
Material.Brown
#BCAAA4
Material.Grey
#EEEEEE
Material.BlueGrey
#B0BEC5

定義済みの色合い

各定義済み色には、Material.color()関数に指定できるいくつかの異なる色合いがあります:

定数値
Material.Shade50
Material.Shade100
Material.Shade200
Material.Shade300
Material.Shade400
Material.Shade500
Material.Shade600
Material.Shade700
Material.Shade800
Material.Shade900
Material.ShadeA100
Material.ShadeA200
Material.ShadeA400
Material.ShadeA700

関連項目: 基本スタイル、ユニバーサルスタイル

バリエーション

「Material」スタイルには、「dense」バリアントも用意されています。このバリアントでは、ボタンやデリゲートなどのコントロールの高さが低く、使用されるフォントサイズも小さくなります。マウスやキーボードによる、より正確で柔軟なユーザー操作が可能なデスクトッププラットフォームでは、「dense」バリアントの使用が推奨されます。

denseバリアントを使用するには、環境変数QT_QUICK_CONTROLS_MATERIAL_VARIANT をDense に設定するか、qtquickcontrols2.confファイルでVariant=Dense を指定します。いずれの場合も、デフォルト値はNormal です。

以下の画像は、通常バリアントとdenseバリアントを使用した場合の、一部のコントロールの違いを示しています:

通常サイズのバリエーションにおける素材スタイルの制御

高密度サイズバリエーションにおけるマテリアルスタイルの制御

なお、上記に示されている高さは、プラットフォームごとのフォントの違いによって異なる場合があることにご注意ください。

コントロールごとの注意事項

TextArea

TextArea は、Filled とOutlined の 2 つのcontainerStyle をサポートしています。Outlined TextArea では、コントロールの最上部に浮いた状態でプレースホルダーテキストが表示されます。 このため、プレースホルダーテキストはコントロールの境界外に出る必要があり、親であるTextArea やFlickableでclip がtrue に設定されている場合、テキストが切り取られる可能性があります。これを回避するために、このような場合にはtopInset を適切な値に設定します。

Materialガイドラインに従い、プレースホルダーテキストは短く保ち、複数行にまたがらないようにしてください。

TextField

TextArea について前述したクリッピングに関する問題は、TextField でも同様に発生する可能性があります。これを回避するには、TextField がclipをtrue に設定する際、topInset を適切な値に設定します。

Materialガイドラインに従い、プレースホルダーテキストは短くし、複数行にまたがらないようにしてください。

添付のプロパティドキュメント

Material.accent:color

このアタッチドプロパティは、テーマのアクセント色を保持します。このプロパティは、任意のウィンドウやアイテムにアタッチできます。値は子要素に伝播されます。

デフォルト値はMaterial.Pink です。

次の例では、ハイライトされたボタンのアクセントカラーがMaterial.Orange に変更されています:

Button {
    text: qsTr("Button")
    highlighted: true
    Material.accent: Material.Orange
}

アクセントカラーを用いたマテリアルスタイルのコントロール例

注: アクセントカラーは任意のcolor に設定できますが 、Materialスタイルパレットの他の色と調和するように設計された、あらかじめ定義されたMaterialカラーのいずれかを使用することをお勧めします。


Material.background:color

このアタッチドプロパティは、テーマの背景色を保持します。このプロパティは、任意のウィンドウやアイテムにアタッチできます。値は子要素に継承されます。

デフォルト値はテーマごとに異なります(ライトまたはダーク)。

次の例では、ボタンの背景色をMaterial.Teal に変更しています:

Button {
    text: qsTr("Button")
    highlighted: true
    Material.background: Material.Teal
}

背景色を示すマテリアルスタイルのコントロール


Material.elevation:int

このアタッチドプロパティは、コントロールのエレベーションを保持します。エレベーションが高いほど、影が濃くなります。このプロパティはどのコントロールにもアタッチできますが、すべてのコントロールでエレベーションが可視化されるわけではありません。この値は子要素には伝播されません。

デフォルト値はコントロールごとに異なります。

次の例では、浮き上がったカードのような外観を実現するために、ペインのelevationを6 に設定しています:

Pane {
    width: 120
    height: 120

    Material.elevation: 6

    Label {
        text: qsTr("I'm a card!")
        anchors.centerIn: parent
    }
}

標高レベルを表示するマテリアルスタイルのコントロール


Material.foreground:color

このアタッチドプロパティは、テーマの前景色を保持します。このプロパティは、任意のウィンドウやアイテムにアタッチできます。その値は子要素に伝播されます。

デフォルト値はテーマ(ライトまたはダーク)によって異なります。

次の例では、ボタンの前景色をMaterial.Pink に設定しています:

Button {
    text: qsTr("Button")
    Material.foreground: Material.Pink
}

マテリアルスタイルの、前色がピンク色のボタン


Material.primary:color

このアタッチドプロパティは、テーマのプライマリカラーを保持します。このプロパティは、任意のウィンドウやアイテムにアタッチできます。その値は子要素に伝播されます。

プライマリカラーは、デフォルトでToolBar の背景色として使用されます。

デフォルト値は `Material.Indigo` です。

注: プライマリカラーは任意のcolor に設定できますが 、Materialスタイルのパレット全体と調和するよう設計された、あらかじめ定義されたMaterialカラーのいずれかを使用することをお勧めします。


Material.theme:列挙型

このアタッチドプロパティは、テーマがライトかダークかを保持します。このプロパティは、任意のウィンドウやアイテムにアタッチできます。値は子要素に伝播されます。

利用可能なテーマ:

定数説明
Material.Lightライトテーマ(デフォルト)
Material.Darkダークテーマ
Material.Systemシステムテーマ

テーマをSystem に設定すると、システムのテーマカラーに基づいてライトテーマまたはダークテーマが選択されます。ただし、themeプロパティの値を読み取る際、その値は決してSystem にはならず、実際のテーマの値になります。

次の例では、ペインとボタンの両方のテーマが `Material.Dark` に設定されています:

Pane {
    Material.theme: Material.Dark

    Button {
        text: qsTr("Button")
    }
}

Materialダークテーマのパネルとボタン


Material.roundedScale:列挙型

このアタッチドプロパティは、対象のコントロールで使用される角の丸みの半径を保持します。このプロパティは任意のウィンドウやアイテムにアタッチできますが、対応しているコントロールは一部に限られます。値は子要素には伝播されません。

デフォルト値はコントロールごとに異なります。

利用可能なスケール:

定数説明
Material.NotRounded角が直角
Material.ExtraSmallScale極小の角丸
Material.SmallScale角の丸み:小
Material.MediumScale中程度の角丸
Material.LargeScale角の丸みが大きい
Material.ExtraLargeScale特大の角丸
Material.FullScale角を完全に丸める

このプロパティは Qt 6.5 で追加されました。

関連項目:マテリアルスタイル: 形状。


Material.containerStyle:列挙型

このアタッチドプロパティは、ターゲットコントロールで使用されるコンテナのスタイルを保持します。このプロパティは任意のウィンドウやアイテムにアタッチできますが、デフォルトでこれをサポートしているのはTextField およびTextArea のみです。この値は子要素には伝播されません。

デフォルト値はコントロールごとに異なります。

利用可能なスタイル:

定数説明
Material.Filled利用可能な場合は、塗りつぶしコンテナのバリエーションを使用してください
Material.Outlined利用可能な場合は、アウトライン付きのコンテナバリエーションを使用する

このプロパティは Qt 6.5 で追加されました。

関連項目:マテリアルスタイル: テキストフィールドのコンテナ。


添付のメソッドドキュメント

color color(enumeration predefined,enumeration shade)

この添付メソッドは、指定された事前定義済みのマテリアル色と、指定されたシェードを組み合わせた有効な色値を返します。省略された場合、シェード引数のデフォルト値はMaterial.Shade500 となります。

Rectangle {
    color: Material.color(Material.Red)
}

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