静态链接到Qt时加载Qt插件?

Tho*_*omi 9 c++ icons qt svg qt4

我正在尝试在QIcons中使用SVG图形.我有一个静态库,其中包含我的所有图形资源,以及该静态库中的一个方法,该方法返回预先加载了正确图形的QIcons.我正在尝试这样做:

QIcon icon(":/icons/find.svg");
Run Code Online (Sandbox Code Playgroud)

我已经通过使用QDir列出它来验证已加载资源:

qDebug() << QDir(":/icons/").entryList();
Run Code Online (Sandbox Code Playgroud)

但是,未显示SVG图标.当我将图标加载代码更改为:

QIcon icon(":/icons/find.png");
Run Code Online (Sandbox Code Playgroud)

一切正常.

问题似乎是SV​​G插件永远不会被加载.我可以获得支持的图像类型列表,其中包含:

("bmp","pbm","pgm","png","ppm","xbm","xpm")

但没有提到SVG.

我已经确定我在我的静态库.pro文件和我的主应用程序.pro文件中都使用了SVG模块.

编辑:

似乎问题是我静态链接到Qt,因此插件都是静态库.QPluginLoader各州的文件:

请注意,如果您的应用程序与Qt静态链接,则无法使用QPluginLoader.在这种情况下,您还必须静态链接到插件.如果需要在静态链接的应用程序中加载动态库,可以使用QLibrary.

然而,静态链接到这些插件似乎什么都不做(支持的图像格式列表不会增长).

EDIT2:

此外,动态链接到Qt(重建我的整个应用程序后)使上面的代码完美地工作.但是,我静态链接到Qt,所以现在的问题更多的是关于在静态链接到Qt时加载Qt插件而不是一般的图标.我会更新帖子标题以反映这一点.

ato*_*ice 11

您需要使用Q_IMPORT_PLUGIN.

请参阅此处的文档:https://doc.qt.io/qt-5/qtplugin.html#Q_IMPORT_PLUGIN