Windows10下Qt5.6.3应用无法加载qsvg.dll 无法使用SVG图片如何解决
Qt 5.6.3 Windows平台qsvg(d).dll无法加载解决方案
核心原因说明
Qt 5.6版本的SVG图片格式插件qsvg(d).dll和普通图片格式插件的依赖逻辑不同,它不单单是一个独立插件,还依赖Qt的SVG核心模块和XML模块,缺失这两个核心库就会导致插件静默加载失败,不会弹出依赖缺失提示。
必做配置项
- 【文件完整性检查】
确认你的程序运行目录下存在以下3个文件,缺一不可:- 插件目录
imageformats下的qsvg(d).dll(和你已经正常加载的qjpeg、qico等插件同目录) - 程序exe根目录下的
Qt5Svg(d).dll - 程序exe根目录下的
Qt5Xml(d).dll(QtSvg依赖该模块解析SVG的XML结构,是最容易被遗漏的依赖)
- 插件目录
- 【Visual Studio本地调试配置】
如果你是在VS中直接调试运行,而非打包后运行:
打开项目属性→Qt Project Settings→Qt Modules,确认勾选了SVG模块,VS会自动把SVG模块的依赖路径加入调试环境的PATH变量中。 - 【qt.conf配置要求】
若你的imageformats目录和exe在同级目录,不需要额外配置qt.conf。如果你的插件放在自定义目录,需要在qt.conf中指定插件路径:[Paths]
Plugins = 你的插件目录路径
验证方式
你可以在main函数初始化窗口前加入以下代码,打印当前支持的图片格式,判断SVG插件是否加载成功:
#include <QDebug> #include <QImageReader> foreach (const QByteArray &fmt, QImageReader::supportedImageFormats()) { qDebug() << "Supported image format:" << fmt; }
如果输出日志中包含svg字段,说明插件加载成功,此时在.ui文件的QStyleSheet中直接指定SVG路径作为image、border-image、background-image即可正常生效。
内容的提问来源于stack exchange,提问作者Herlin Drew
相关产品推荐
相关产品推荐

