Qt Quick Controls のアイコン

Qt Quick Controls は Qt 5.10 からアイコンをサポートしています。つまり、ボタン、アイテムデリゲート、メニューアイテムは、テキストラベルに加えてアイコンを表示できるようになりました。

アイコンの使用

AbstractButton Action Qt 5.10では、アイコンを設定するためのプロパティが用意されています:

  • icon.name
  • icon.source
  • icon.width
  • icon.height
  • icon.color
  • icon.cache

テーマアイコンは名前で、通常のアイコンはソースURLで参照されます。icon.nameicon.source の両方を設定することで、アイコンが常に見つかるようにすることができます。アイコンがテーマで見つかれば、icon.source 。アイコンがテーマで見つからない場合は、icon.source が代わりに使用されます。

Button {
    icon.name: "edit-cut"
    icon.source: "images/cut.png"
}

Qt Quick Controls 2 スタイルは、ガイドラインに従ってデフォルトのアイコンサイズと色を要求しますが、icon.widthicon.heighticon.color プロパティを設定することで、これらをオーバーライドすることができます。

widthheight が設定されていないアイコンによって読み込まれる画像は、使用されているアイコンの種類によって異なります。テーマアイコンの場合、最も近いサイズが選択される。通常のアイコンの場合、ImagesourceSize プロパティと同じ動作となる。

アイコンの色はデフォルトで指定され、異なる状態のテキスト色と一致します。オリジナルの色でアイコンを使用するには、色を"transparent" に設定します。

Button {
    icon.color: "transparent"
    icon.source: "images/logo.png"
}

ボタンについては、display プロパティを使用して、ボタン内でのアイコンとテキストの表示方法を制御できます。

icon.cache プロパティは、アイコン画像をキャッシュするかどうかを制御します。詳しくは、cache を参照してください。

アイコンテーマ

準拠するアイコンテーマはfreedesktopアイコンテーマ仕様に従わなければなりません。http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html

伝統的に、Linux と UNIX だけがプラットフォームレベルでアイコンテーマをサポートしていますが、アプリケーションに準拠したアイコンテーマをバンドルすることで、どのプラットフォームでもテーマ付きのアイコンを使うことができます。

デフォルトのicon theme search paths はプラットフォームによって異なります。LinuxとUNIXでは、検索パスはXDG_DATA_DIRS 環境変数があればそれを使用します。すべてのプラットフォームでは、フォールバックとしてリソースディレクトリ:/icons 。カスタムアイコンテーマの検索パスはQIcon::setThemeSearchPaths() で設定できます。

次の例では、mythemeというアイコンテーマをQtのリソースシステムを使ってアプリケーションのリソースにバンドルしています。

<RCC>
    <qresource prefix="/">
        <file>icons/mytheme/index.theme</file>
        <file>icons/mytheme/32x32/myicon.png</file>
        <file>icons/mytheme/32x32@2/myicon.png</file>
    </qresource>
</RCC>

index.theme ファイルにはアイコンテーマの一般的な属性が記述され、利用可能なテーマアイコンディレクトリがリストアップされています:

[Icon Theme]
Name=mytheme
Comment=My Icon Theme

Directories=32x32,32x32@2

[32x32]
Size=32
Type=Fixed

[32x32@2]
Size=32
Scale=2
Type=Fixed

バンドルされているアイコンテーマを使用するためには、アプリケーションはメインのQMLファイルをロードする前にQIcon::setThemeName ()を呼び出す必要があります:

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QIcon>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QIcon::setThemeName("mytheme"); // <--

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    return app.exec();
}

これで、フォールバックソースを指定することなく、バンドルされているアイコンテーマの名前付きアイコンを使用できるようになりました:

Button {
    icon.name: "myicon"
}

Gallery の例と Wearable Demoは、バンドルされたアイコンテーマを使った完全な実行可能アプリケーションを提供します。

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