のアイコン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 icon theme specification に従わなければなりません。これは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は、バンドルされたアイコンテーマを使った完全な実行可能アプリケーションを提供します。

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