我无法按名称查找图标以正常工作。我复制了Gallery示例中的代码,并在我的项目中重复了相同的配置,但它不起作用。
这就是我所做的:
1.将图标/图库复制到我自己项目的目录中,这是文件列表:
this.handleSubmit = this.handleSubmit.bind(this)
2.将icons/default
icons/default/20x20@3
icons/default/20x20@3/back.png
icons/default/20x20@3/menu.png
icons/default/20x20@3/drawer.png
icons/default/20x20@4
icons/default/20x20@4/back.png
icons/default/20x20@4/menu.png
icons/default/20x20@4/drawer.png
icons/default/20x20
icons/default/20x20/back.png
icons/default/20x20/menu.png
icons/default/20x20/drawer.png
icons/default/index.theme
icons/default/20x20@2
icons/default/20x20@2/back.png
icons/default/20x20@2/menu.png
icons/default/20x20@2/drawer.png
个文件添加到主题目录中:
index.theme
3.为main.cpp添加了相应的行,启用图标,这是代码:
[Icon Theme]
Name=default
Comment=Qt Quick Controls 2 Gallery Example Icon Theme
Directories=20x20,20x20@2,20x20@3,20x20@4
[20x20]
Size=20
Type=Fixed
[20x20@2]
Size=20
Scale=2
Type=Fixed
[20x20@3]
Size=20
Scale=3
Type=Fixed
[20x20@4]
Size=20
Scale=4
Type=Fixed
在QML文件中,我以这种方式使用图标:
QGuiApplication::setApplicationName("MyApp");
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QIcon::setThemeName("default");
QQuickStyle::setStyle("Material");
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
如果我通过URL查找,它可以正常工作:
ToolButton {
icon.name: "menu"
}
那么,为什么查找名称不起作用以及如何调试呢?
编辑:
在Mitch的回答之后,我发现图标不起作用,因为":/ icons"在图标的路径中输入不是第一个。
所以,这段代码已经工作了:
ToolButton {
icon.source: "qrc:/icons/default/20x20/menu.png"
}
然而,这个cdoe工作:
QIcon::setThemeName("default");
QStringList list;
list<<":/icons";
list<<"/usr/share/icons";
QIcon::setThemeSearchPaths(list);
要使其正常工作,您只需要创建图标所在的路径,首先是列表中的条目。
但也许这是一个错误,我正在使用Qt 5.11
答案 0 :(得分:1)
如果您所做的事情列表详尽无遗,那么您missed a step:
传统上,只有Linux和UNIX支持平台级别的图标主题,但可以在应用程序中捆绑一个兼容的图标主题,以在任何平台上使用主题图标。
默认图标主题搜索路径取决于平台。在Linux和UNIX上,搜索路径将使用XDG_DATA_DIRS环境变量(如果可用)。所有平台都有资源目录:/ icons作为后备。可以使用QIcon :: setThemeSearchPaths()。
设置自定义图标主题搜索路径以下示例使用Qt的资源系统将名为mytheme的图标主题捆绑到应用程序的资源中。
<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>
创建该文件后,您还需要将其添加到.pro
。