我想在QIcons中使用SVG图形。我有一个静态库,其中包含所有我的图形资源,以及一个在该静态库中返回预加载了正确图形的QIcons的方法。我正在尝试执行以下操作:
QIcon icon(":/icons/find.svg");
我已经验证过资源已经被加载,通过使用QDir列出它:
qDebug() << QDir(":/icons/").entryList();
然而,SVG图标未显示。当我将图标加载代码更改为以下内容时:
QIcon icon(":/icons/find.png");
一切都运行正常。
问题似乎在于SVG插件从未被加载。我可以获取支持的图像类型列表,其中包括:
("bmp", "pbm", "pgm", "png", "ppm", "xbm", "xpm")
但没有提到SVG。
我确保在我的静态库.pro文件和主应用程序.pro文件中都使用了SVG模块。
编辑:
问题似乎是我链接到Qt静态库,因此所有插件都是静态库。QPluginLoader的文档说明如下:
请注意,如果您的应用程序与Qt静态链接,则无法使用QPluginLoader。在这种情况下,您还必须静态链接到插件。如果需要在静态链接的应用程序中加载动态库,则可以使用QLibrary。
然而,静态链接到这些插件似乎没有任何作用(支持的图像格式列表不会增长)。
编辑2:
此外,动态链接到Qt(在重新构建整个应用程序后)使上面的代码完美运行。然而,我想静态链接到Qt,因此问题现在看起来更多地涉及在链接到Qt静态时加载Qt插件,而不是一般的图标问题。我将更新帖子标题以反映这一点。