イマジン・スタイル

イマジン・スタイルは、設定可能な画像アセットに基づいています。詳細...

インポート ステートメントインポート QtQuick.Controls.Imagine 2.12
以降Qt 5.10

付属プロパティ

詳細説明

Imagineスタイルは画像アセットに基づいています。スタイルにはデフォルトの画像セットが付属していますが、事前に定義された命名規則を使用して画像のあるディレクトリを提供することで、画像を簡単に変更できます。

イマジン・スタイルとデフォルト画像

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

ファイル名

画像ファイルのファイル名は、以下の規則で命名されています:

<control>-<element>-<states>

<control><element> セクションは必須ですが、<states> セクションは任意です。たとえば、Button"button-background.9.png" という名前のファイルが1つ提供されると、Button がサポートするすべての状態に使用されます。画像を提供する状態のセットを決めるのは開発者次第です。しかし、disabledpressed など、可能な限り最も一般的なコントロールの状態に画像を提供することを推奨します。こうすることで、インタラクティブ・コントロールが、エンドユーザーが期待するような視覚的な振る舞いをするようになります。

要素リファレンス

次の表は、各コントロールでサポートされている要素、その要素で可能な状態、およびその要素が期待するファイル拡張子の一覧です。要素は、コントロールの特定の視覚的な部分を表す画像です。例えば、Button"background" 要素は、background を表します。

コントロール要素状態拡張
ApplicationWindow背景アクティブ.9.png (または .png)
BusyIndicatorアニメーション無効, 実行中, ミラーリング, ホバリング.webp
背景上記と同じ.webp
Button背景無効, 押された, チェックされた, チェック可能, フォーカスされた, ハイライトされた, フラットな, ミラーされた, ホバーされた.9.png
CheckBox背景無効, 押された, チェックされた, 部分的にチェックされた, フォーカスされた, ミラーされた, ホバリングされた.9.png (または.png)
インジケータ上記と同じ.png
CheckDelegate背景無効, 押された, チェックされた, 部分的にチェックされた, フォーカスされた, ハイライトされた, ミラーされた, ホバーされた.9.png (または .png)
インジケータ上記と同じ.png
ComboBox背景無効, 押された, 編集可能, 開いた, フォーカス, ミラー, ホバー, フラット.9.png (または .png)
インジケータ上記と同じ.png
ポップアップ同上.9.png (または .png)
DelayButton背景disabled、pressed、checked、checkable、focus、mirrored、hovered.9.png (または .png)
プログレス上記と同じ.9.png (または .png)
マスク上記と同じ.9.png (または .png)
Dial背景1無効、押下、フォーカス、ミラー、ホバリング.9.png (または .png)
ハンドル上記と同じ.9.png (または .png)
Dialog背景モーダル、薄暗い.9.png (または .png)
タイトル上記と同じ.9.png (または .png)
オーバーレイモーダル.9.png (または .png)
DialogButtonBox背景無効、ミラー.9.png (または .png)
Drawer背景モーダル, 薄暗い, 上, 左, 右, 下.9.png (または .png)
オーバーレイモーダル.9.png (または .png)
Frame背景無効、ミラー.9.png (または .png)
GroupBox背景無効、ミラー.9.png (または .png)
タイトル上記と同じ.9.png (または .png)
ItemDelegate背景無効、押された、フォーカスされた、ハイライトされた、ミラーされた、ホバーされた.9.png (または .png)
Label背景無効, 鏡像, ホバリング.9.png (または .png)
Menu背景モーダル, 薄暗い.9.png (または .png)
オーバーレイモーダル.9.png (または .png)
MenuItem矢印無効, 押された, チェックされた, フォーカスされた, ハイライトされた, ミラーされた, ホバーされた.png
背景上記と同じ.9.png (または .png)
インジケータ上記と同じ.png
MenuSeparator背景無効、ミラー.9.png (または .png)
セパレータ上記と同じ.9.png (または .png)
Page背景無効、ミラー.9.png (または .png)
PageIndicator背景無効、ミラー、ホバリング.9.png (または .png)
デリゲート無効、押下、カレント、ミラーリング、ホバリング.png
Pane背景無効, ミラー.9.png (または .png)
Popup背景モーダル、薄暗い.9.png (または .png)
オーバーレイモーダル.9.png (または .png)
ProgressBarアニメーション無効、ミラー、ホバリング.png
背景無効、不定、ミラー、ホバリング.9.png (または .png)
マスク上記と同じ.9.png (または .png)
プログレス上記と同じ.9.png (または .png)
RadioButton背景無効、押された、チェックされた、フォーカスされた、ミラーされた、ホバーされた.9.png (または .png)
インジケータ上記と同じ.png
RadioDelegate背景無効, 押された, チェックされた, フォーカスされた, ハイライトされた, ミラーされた, ホバーされた.9.png (または .png)
インジケータ上記と同じ.png
RangeSlider背景垂直、水平、無効、フォーカス、ミラー、ホバリング.9.png (または .png)
RangeSliderプログレス上記と同じ.9.png (または .png)
ハンドル1番目、2番目、縦、横、無効、押された、フォーカスされた、ミラーされた、ホバーされた.png
RoundButton背景無効, 押された, チェックされた, チェック可能, フォーカスされた, ハイライトされた, フラットな, ミラーされた, ホバされた.9.png (または .png)
ScrollBar背景垂直, 水平, 無効, インタラクティブ, 押下, 鏡像, ホバリング.9.png (または.png)
ハンドル上記と同じ.9.png (または .png)
ScrollIndicator背景垂直、水平、無効、ミラー、ホバリング.9.png (または .png)
ハンドル上記と同じ.9.png (または .png)
ScrollView背景無効、ミラー.9.png(または.png)
Slider背景垂直、水平、無効、押下、フォーカス、ミラーリング、ホバリング.9.png (または .png)
ハンドル上記と同じ.9.png (または .png)
プログレス上記と同じ.9.png (または .png)
SpinBox背景無効、編集可能、フォーカス、ミラー、ホバー.9.png (または .png)
エディタ無効, フォーカス, ミラー, ホバリング.9.png (または .png)
インジケータアップ, ダウン, 無効, 編集可能, 押下, フォーカス, ミラー, ホバリング.9.png (または .png)
StackView背景無効, ミラー.9.png (または .png)
SwipeDelegate背景無効、押下、フォーカス、ハイライト、ミラー、ホバー.9.png (または .png)
SwipeView背景垂直, 水平, 無効, インタラクティブ, フォーカス, ミラー.9.png (または .png)
Switch背景無効, 押された, チェックされた, フォーカスされた, ミラーされた, ホバーされた.9.png (または .png)
ハンドル上記と同じ.9.png (または .png)
インジケータ上記と同じ.9.png (または .png)
SwitchDelegate背景無効、押された、チェックされた、フォーカスされた、ハイライトされた、ミラーされた、ホバーされた.9.png (または .png)
ハンドル上記と同じ.9.png (または .png)
インジケータ上記と同じ.9.png (または .png)
TabBar背景無効、ヘッダ、フッタ、ミラーリング.9.png (または .png)
TabButton背景無効、押された、チェックされた、フォーカスされた、ミラーされた、ホバーされた.9.png (または .png)
TextArea背景無効、フォーカス、ミラー、ホバリング.9.png (または .png)
TextField背景無効、フォーカス、ミラー、ホバリング.9.png (または .png)
ToolBar背景無効、ヘッダ、フッタ、ミラーリング.9.png (または .png)
ToolButton背景無効, 押された, チェックされた, チェック可能, フォーカスされた, ハイライトされた, フラット, ミラーされた, ホバーされた.9.png (または .png)
ToolSeparator背景垂直, 水平, 無効, ミラー.9.png (または .png)
セパレータ上記と同じ.9.png (または .png)
ToolTip背景.9.png (または .png)
Tumbler背景無効、フォーカス、ミラー、ホバリング.9.png (または .png)

注: 1) Imagine スタイルダイヤルは、Qt 6.6 で導入されたstartAngleendAngle プロパティをまだサポートしていません。

アセット例

次の表は、すべてのコントロールのアセット例(デフォルトの Imagine スタイルのアセットから抜粋)です。すべての要素にアセットが必要なわけではないので、このリストは完全ではありませんが、独自のアセットを作成する際のガイドとして使用できます。

これらのアセットがエクスポートされたテンプレートは、Sketchプロジェクトとして利用できます。

コントロールエレメント状態アセット備考
ApplicationWindow背景

脚注 1参照
オーバーレイ

脚注 1参照
オーバーレイモーダル

脚注 1参照
Button背景

背景無効

背景フォーカス

背景押された

背景チェック

背景チェック済み、無効

背景チェック済み、フォーカス

背景チェック付き、ホバリング

背景ハイライト

背景ハイライト、無効

背景ハイライト、フォーカス

背景ハイライト、ホバー

背景ハイライトされた、押された

背景ハイライト、チェック

背景ホバリング

背景フラット

背景フラット、無効

背景フラット、ホバリング

背景フラット、押された

背景フラット、チェック

CheckBoxインジケータ

インジケータ無効

インジケータ押された

インジケータチェック済み

インジケータチェックされ、押された

インジケータチェック、ホバー

インジケータチェック、フォーカス

インジケータ部分的にチェック

インジケータ部分的に、チェックされた、押された

インジケータ部分的、チェック済み、フォーカス

インジケータ部分的に、チェックされた、ホバリング

インジケータフォーカス

インジケータホバリング

CheckDelegate背景

背景無効

背景押された

背景フォーカス

背景ホバリング

インジケータ

インジケータ無効

インジケータ押された

インジケータチェック済み

インジケータチェックされ、押された

インジケータチェック、フォーカス

インジケータホバリング

インジケータフォーカス

インジケータホバリング

インジケータ部分的にチェック

インジケータ部分的に、チェックされ、押された

インジケータ部分的、チェック済み、フォーカス

インジケータ部分的に、チェックされた、ホバリング

インジケータホバリング

ComboBox背景

背景無効

背景フォーカス

背景ホバリング

背景押された

背景オープン

背景編集可能

背景編集可能、フォーカス

背景編集可能、無効

インジケータ

インジケータ無効

インジケータ編集可能

インジケータ編集可能、無効

インジケータ編集可能、ミラー

インジケータ編集可能、ミラー、無効

ポップアップ

DelayButton背景

背景無効

背景無効、チェック

背景フォーカス

背景押された

背景チェック

背景チェック、フォーカス

背景チェック、ホバー

背景ホバリング

プログレス

進行状況無効

マスク

Dial背景

背景無効

背景フォーカス

ハンドル

ハンドル無効

ハンドルフォーカス

ハンドルフォーカスされた、押された

ハンドルフォーカス、ホバリング

ハンドル押された

ハンドルホバリング

Dialog背景

オーバーレイ

脚注 1参照
オーバーレイモーダル

脚注 1参照
DialogButtonBox背景

Drawer背景

背景

背景トップ

背景

オーバーレイ

脚注 1参照
オーバーレイモーダル

脚注 1参照
Frame背景

GroupBox背景

タイトル

ItemDelegate背景

背景無効

背景押された

背景フォーカス

背景ホバリング

背景ハイライト

Menu背景

MenuItem背景

背景ハイライト

矢印

矢印ミラー

矢印無効

矢印ミラー、無効

インジケータ

インジケーター無効

インジケーター押された

インジケータチェック済み

インジケータチェックされ、押された

インジケータチェック、フォーカス

インジケータホバリング

インジケータフォーカス

インジケータホバリング

MenuSeparatorセパレータ

Page背景

脚注 1参照
PageIndicatorデリゲート

デリゲート無効

デリゲート無効、現在

デリゲート押された

デリゲート現在の

Pane背景

Popup背景

脚注 1参照
オーバーレイ

脚注 1参照
オーバーレイモーダル

ProgressBar背景

プログレス

マスク

RadioButtonインジケータ

インジケータ無効

インジケータ押された

インジケータチェック済み

インジケータチェック、フォーカス

インジケータチェック、ホバー

インジケータチェックされた、押された

インジケータフォーカス

インジケータホバリング

RadioDelegate背景

背景無効

背景押された

背景フォーカス

背景ホバリング

インジケータ

インジケータ無効

インジケータ押された

インジケータチェック済み

インジケータチェック、フォーカス

インジケータチェック、ホバー

インジケータチェックされた、押された

インジケータフォーカス

インジケータホバリング

RangeSlider背景垂直

背景水平

プログレス垂直

進行垂直、無効

進行水平

進行水平、無効

ハンドル

ハンドル無効

ハンドルフォーカス

ハンドルフォーカス、ホバリング

ハンドルフォーカス、押された

ハンドルホバリング

ハンドル押された

RoundButton背景

背景無効

背景無効、チェック

背景フォーカス

背景押された

背景チェック

背景チェック、フォーカス

背景チェック、ホバー

背景ハイライト

背景ハイライト, 押された

背景ハイライト、フォーカス

背景ハイライト、ホバー

背景ホバリング

ScrollBarハンドル

ハンドル無効

ハンドルインタラクティブ

ハンドルインタラクティブ、無効

ハンドルインタラクティブ、押された

ハンドルインタラクティブ, ホバリング

ScrollIndicatorハンドル

Slider背景垂直

背景水平

進捗状況垂直

進行垂直、無効

進行水平

進行水平、無効

ハンドル

ハンドル無効

ハンドルフォーカス

ハンドルフォーカス、ホバリング

ハンドルフォーカス、押された

ハンドルホバリング

ハンドル押された

SpinBox背景

背景無効

背景フォーカス

背景編集可能

インジケータアップ

インジケータアップ、無効

インジケータアップ、押された

インジケータ上、フォーカス

インジケータ上、ミラー

インジケータ上、ホバリング

インジケータアップ、編集可能

インジケータ上、編集可能、押された

インジケータ上、編集可能、フォーカス

インジケータ上、編集可能、ミラー

インジケータアップ、編集可能、ホバリング

インジケータ

インジケータ下、無効

インジケータ押された

インジケータ下、フォーカス

インジケータ下、ミラー

インジケータ下、ホバリング

インジケータダウン、編集可能

インジケータ下、編集可能、押された

インジケータ下、編集可能、フォーカス

インジケータ下、編集可能、ミラー

インジケータ下向き、編集可能、ホバリング

SwipeDelegate背景

背景無効

背景押された

背景フォーカス

背景ホバリング

Switchインジケータ

インジケータ無効

インジケータ押された

インジケータチェック済み

インジケータチェック、フォーカス

インジケータチェック、ホバー

インジケータチェックされた、押された

インジケータフォーカス

インジケータホバリング

ハンドル

ハンドル無効

ハンドル押された

SwitchDelegate背景

背景無効

背景押された

背景フォーカス

背景ホバリング

インジケータ

インジケータ無効

インジケータ押された

インジケータチェック済み

インジケータチェック、フォーカス

インジケータチェック、ホバー

インジケータチェックされた、押された

インジケータフォーカス

インジケータホバリング

ハンドル

ハンドル無効

TabBar背景

TabButton背景

背景無効

背景押された

背景チェックされた

背景ホバリング

背景無効, チェック

TextArea背景

背景無効

背景フォーカス

TextField背景

背景無効

背景フォーカス

ToolBar背景

ToolButton背景

背景無効、チェック

背景フォーカス

背景押された

背景チェック

背景チェック、フォーカス

背景チェック、ホバー

背景ホバリング

ToolSeparatorセパレータ水平

セパレータ垂直

ToolTip背景

1コントロールを塗りつぶすように引き伸ばされた、1色を含む1x1の画像。

9パッチ画像

Imagineスタイルでは、特定の要素のサイズ変更に対する反応をデザイナーがコントロールできるように、9パッチ画像を使用しています。Buttonbackground 」を表す9パッチ画像の例と、拡大バージョン(9パッチの線を見やすくするため)を示します:

画像の内容は幅44ピクセル×高さ32ピクセルです。すべての9パッチ画像は、すべての辺に1ピクセルの太さの線(総称して「9パッチ線」と呼ぶ)が必要なので、画像の実際のサイズは幅46ピクセル×高さ34ピクセルになる。9パッチラインは、画像のターゲットDPIに関係なく、1ピクセルの太さでなければならないことに注意してください。例えば、button-background.9.pngとbutton-background@2x.9.png の9パッチラインは、どちらも1ピクセルの太さでなければなりません。

9パッチラインは黒でなければならず、残りの部分は透明か白でなければなりません:

伸縮可能な領域

上端と左端にある9本のパッチラインは、リサイズ時に画像のどの部分が引き伸ばされるかを決定します。

以下は、9-patch イメージをさまざまな寸法で元のサイズの 1.5 倍にリサイズした例です:

角丸の部分は線の範囲外なので、元のサイズを保っていることに注目してください。

パディング領域

padding Control Layout右端と下端にある9パッチの線は、コントロールのcontentItem

以下は、9パッチ画像をリサイズした例ですが、今回はパディング9パッチラインがどのように機能するかを示しています。

contentItem は、網掛けされた領域内で必要なだけのスペースを取ることができます。パディング線がない場合、contentItem は、伸縮可能な領域を超えることなく、必要なだけのスペースを取ります。

挿入エリア

例えば、コントロールにドロップシャドウが必要な場合があります。しかし、上のボタンにドロップシャドウを追加すると、そのサイズに影響し、レイアウトとマウス/タッチ入力境界の両方に問題が生じます。

インセット領域は、9パッチ画像のある領域をコントロールの外側に出すようにコントロールに指示することで、この問題を解決します:

下の画像では、破線がボタンのクリック可能領域と、レイアウトで占めるスペースを表しています。影はその後ろにあるストライプの領域で示されています:

9パッチ画像のエクスポート

Imagineスタイルで使用するのに適した9パッチ画像を作成するには、さまざまなベクターエディターやビットマップエディターを使用できます。以下のセクションでは、各エディタのエクスポート手順を簡単に説明し、最後のセクションでは、エクスポートした画像が9-patchに適合していることを確認する方法を説明します。

アフィニティ・デザイナー

Affinityのエクスポート設定のドキュメントを参照してください。

Adobe Illustrator

AdobeのAsset Exportパネルのドキュメントを参照してください。

アドビ フォトショップ

Adobeの「レイヤーから画像アセットを生成する」のドキュメントを参照してください。

Inkscape

Inkscape 9-Patch Export ExtensionはInkscapeでアセットのエクスポートに使用できます。

スケッチ

Sketch のエクスポートに関するドキュメントをご覧ください。

また、Qt Quick Controlsは、アセットがエクスポートされた後、9パッチの線の太さを自動的に修正するSketch用のプラグインも提供しています。このファイルをインストールするには、ダブルクリックしてください。Sketchが9-patchエクスポートプラグインがインストールされたことを確認すると、エクスポート時にプラグインが自動的に画像を処理します。

9パッチラインの修正

いくつかのDPIバリエーション(@2x,@3x など)で9-patchイメージをエクスポートする場合、9-patchラインは通常イメージと共にスケールアップされます。これを修正する方法はいくつかありますが、おそらく最も簡単な方法は、ImageMagickのmogrifyツールを使うことです。このツールには-shave 機能があり、それを使って画像をトリミングし、9パッチラインの太さを減らすことができます:

mogrify -shave 1x1 -path path/to/images *@2x.9.png
mogrify -shave 2x2 -path path/to/images *@3x.9.png
mogrify -shave 3x3 -path path/to/images *@4x.9.png

通常のDPI画像(@Nx 接頭辞のない画像)は影響を受けないので、高DPIディスプレイ向けの画像に対してのみコマンドを実行する必要があります。

アニメーション画像

Imagineスタイルでは、WebPとGIFのアニメーション画像形式がサポートされています。

カスタマイズ

パス

Imagine スタイルでは、イメージ アセットの選択に使用するパスをカスタマイズできます。パスはどのウィンドウやアイテムにも指定でき、fonts と同じ方法で自動的に子ウィンドウにも伝わります。次の例では、ウィンドウと3つのラジオボタンが、ダークな画像アセット("qrc:/themes/dark "にあるファイル)とともに表示されます。

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Imagine 2.12

ApplicationWindow {
    visible: true

    Imagine.path: "qrc:/themes/dark"

    Column {
        anchors.centerIn: parent

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

QMLでパスを指定する以外に、環境変数や 設定ファイルで指定することも可能です。QMLで指定された属性は、他のすべての方法よりも優先されます。

設定ファイル
変数説明
PathImagine スタイル アセットを含むディレクトリへのパスを指定します。指定しない場合は、組み込みアセットが使用されます。

例えば、リソース システムに保存されているディレクトリへのパスを指定する場合などです:

[Imagine]
Path=:/imagine-assets

ローカル ディレクトリへの相対パスを指定する場合:

[Imagine]
Path=imagine-assets

注: 技術的な制限により、qtquickcontrols2.conf ファイルからの相対パスの場合、"imagine" という名前にすべきではありません。

設定ファイルの詳細については、Qt Quick Controls 設定ファイルを参照してください。

環境変数
変数説明
QT_QUICK_CONTROLS_IMAGINE_PATHImagine スタイル アセットを含むディレクトリへのパスを指定します。指定しない場合は、組み込みアセットが使用されます。

例えば、リソース システムに保存されているディレクトリへのパスを指定する場合などです:

QT_QUICK_CONTROLS_IMAGINE_PATH=:/imagine-assets

ローカル ディレクトリへの相対パスを指定する場合:

QT_QUICK_CONTROLS_IMAGINE_PATH=imagine-assets

注: 技術的な制限により、qtquickcontrols2.conf ファイルからの相対パスの場合、"imagine" という名前にすべきではありません。

QT_QUICK_CONTROLS_IMAGINE_SMOOTH9-patch イメージのスムーズなスケーリングを有効にするには、1 に設定します。この環境変数は Qt 6.5 で追加されました。

サポートされている環境変数の完全なリストはQt Quick Controls の Supported Environment Variablesを参照してください。

パレット

Imagineスタイルでは、palette プロパティとqtquickcontrols2.confファイルによるパレットのカスタマイズをサポートしています。他のスタイルと同様に、Imagineスタイルが使用する正確なpalette roles はスタイルに依存します。ただし、コントロールの視覚的な外観の大部分(背景など)は画像アセットで管理されるため、一般的にテキストに使用されるロールだけが影響します。

フォント

カスタムフォントは、font プロパティと設定ファイルで設定できます。

依存関係

Imagineスタイルに固有の属性にアクセスするには、Imagineスタイルを別途インポートする必要があります。Imagineスタイルへの参照に関係なく、同じアプリケーションコードが他のどのスタイルでも実行されることに注意する必要があります。Imagine固有の属性は、アプリケーションがImagineスタイルで実行される場合にのみ効果を発揮します。

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

Qt Quick Controls のスタイリング」も参照してください。

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

Imagine.path:文字列

この添付プロパティは、画像アセットへのパスを保持します。

Button {
    Imagine.path: "qrc:/themes/dark"
}

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