web-dev-qa-db-ja.com

Qt Creator Designerで「テーマ」アイコンはどのように機能しますか?

「コマンドリンクボタン」(QCommandLinkButton)を作成すると、比較的素敵な緑色の矢印アイコンが表示されます。

image description

他にどのようなニースアイコンを選択できるかを確認したいと思います。アイコンを変更しようとすると、[Theme]は、パスまたはいくつかのGUI選択ダイアログの代わりに表示されます。

image description

コンテキストメニューにも気づきました。

image description

テーマからアイコンを設定をクリックすると、再びGUI選択リストが表示されますが、テキストフィールドしか表示されません。

image description

私が想像していたこと:

image description

緑の矢印が描かれたアイコンのリストはどこにありますか?

それはあなたが使いたい機能ではないと思います。そこでの「テーマ」名は QIcon::fromTheme 機能。FDO仕様に従って名前が付けられたアイコンを使用します

また、独自のテーマファイルを展開しない限り、FDO以外のプラットフォーム(Windows、Macなど)では実際にはサポートされません。


現在someストックアイコンがQt自体に付属しています。それらをデザイナーから設定する方法はわかりませんが、コードから使用できます QStyle::standardIcon

 widget->setIcon(widget->style()->standardIcon(QStyle::SP_BrowserReload));

必要なアイコンがQtから提供されていない場合は、出荷する必要があります。その場合、 Resource System は、実行可能ファイルと一緒にバンドルする便利な方法です。


最後に重要なことですが、UXの観点からは、Vistaのようなウィザードを実際に構築しているのでない限り、QToolButtonsの使用を検討する必要があります。

4
peppe

_QIcon::fromTheme_は特定の条件下で機能します。

QIcon::themeSearchPaths()QIcon::themeName()で見つけられる場合

必要なアイコンがそこにない場合、Qt Designerはアイコンという名前のfromテーマを実行できません。

しかし...ターゲットシステムでテーマ検索パスを確認し、テーマ名を設定すると、成功する可能性が高くなります。

Linuxでは、プラスとマイナスのアイコンを取得したかった。

_list-add.png_と_list-remove.png_が適切だとわかりました。

https://github.com/GNOME/adwaita-icon-theme/tree/master/Adwaita/16x16/actions

http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.htmlhttp://standards.freedesktop.org/icon-naming- spec/icon-naming-spec-latest.html

私は自分のシステムでロケートを行い、これらを見つけました:

_/usr/share/icons/gnome/16x16/actions/list-add.png
...
/usr/share/icons/gnome/32x32/actions/list-add.png
/usr/share/icons/gnome/scalable/actions/list-add.svg
/usr/share/icons/oxygen/16x16/actions/list-add.png
...
_

_QIcon::fromTheme_でfallbackアイコンを使用して強制

ファイルシステムでアイコンを見つけます:

_ui->toolButton->setIcon(QIcon::fromTheme("list-add",
    QIcon("/usr/share/icons/gnome/16x16/actions/list-add.png")));
_

Qtリソースシステムでアイコンを見つけます...ビルドのqrcファイルにアイコンを追加し、そのパスを参照します。

_ui->toolButton->setIcon(QIcon::fromTheme("list-add",
    QIcon(":/list-add.png")));
_

現在のアイコンテーマの上書き

_qDebug() << "themeSearchPaths:" << QIcon::themeSearchPaths() << QIcon::themeName();

// themeSearchPaths: ("/usr/local/share/icons", "/usr/share/icons", ":/icons") "hicolor"
_

システムのデフォルトのテーマ、およびターゲットのデプロイメントマシンには、必要なアイコンが含まれていない可能性があります...しかし、ほとんどの場合、GNOMEまたはOxygenデスクトップデスクトップテーマがインストールされています...

_QIcon::setThemeName("oxygen");
_

コードのランタイムまでテーマが設定されないため、Qt Designerにプレビューが表示されないことに注意してください。

Gnomeアイコンライブラリには、1100以上のアイコンがあります。ここに1つのリストがあります:

https://Gist.github.com/peteristhegreat/c0ca6e1a57e5d4b9cd0bb1d7b3be1d6a

これは、ターゲットシステムで使用可能なテーマを知っている限り機能します。

Freedesktop.orgのリストには、286個のアイコンがリストされています。

Qtに含まれるアイコンを使用する

@peppeが指摘したように、Qtには70の標準アイコンも含まれています。

_widget->setIcon(widget->style()->standardIcon(QStyle::SP_BrowserReload));
_

http://doc.qt.io/qt-5/qstyle.html#StandardPixmap-enum

結論

ターゲットシステムでストックライブラリを使用するのがおそらく最速です。 Qtビルトインの使用はすぐに理解して使用できますが、かなり制限されています。リソースファイルの使用はおそらく最も堅牢な方法であり、使用するアイコンについて無制限のオプションが提供されます。

必ず標準のアイコンパックを選択し、ライセンスや属性などについて検討してください。

また、オンラインで利用できるアイコンが不足することはありません。

https://www.quora.com/What-is-the-best-icon-library

https://www.google.com/search?q=open+source+icon+library

お役に立てば幸いです。

3
phyatt