Estoy tratando de usar gráficos SVG en QIcons. Tengo una biblioteca estática que contiene todos mis recursos gráficos y un método en esa biblioteca estática que devuelve QIcons precargados con los gráficos correctos. Estoy tratando de hacer esto:Cargando complementos Qt al enlazar a Qt estáticamente?
QIcon icon(":/icons/find.svg");
He comprobado que los recursos que se ha cargado enumerando con QDir:
qDebug() << QDir(":/icons/").entryList();
Sin embargo, no está siendo mostrado el icono SVG. Cuando cambio el código de carga del icono a este:
QIcon icon(":/icons/find.png");
todo funciona correctamente.
El problema parece ser que el complemento SVG nunca se carga. Puedo obtener una lista de tipos de imagen compatibles, que contiene:
("BMP", "PBM", "PGM", "png", "ppm", "xbm", "xpm")
pero no se menciona SVG.
Me he asegurado de estar utilizando el módulo SVG en mi archivo .pro de biblioteca estática y en mi archivo .pro de aplicación principal.
Editar:
Parece que el problema es que estoy ligarse a Q t estáticamente, y por lo tanto los plugins son todas las librerías estáticas. La documentación para QPluginLoader
establece que:
Tenga en cuenta que la QPluginLoader no puede ser utilizado si su aplicación es estáticamente vinculado en Qt. En este caso, usted también tendrá que enlazar a los complementos estáticamente. Puede usar QLibrary si necesita cargar bibliotecas dinámicas en una aplicación enlazada estáticamente.
Sin embargo, el enlace estático con estos complementos parece no hacer nada (la lista de formatos de imagen compatibles no crece).
Edit2:
también, que une a Q t dinámicamente (después de reconstruir toda mi aplicación) hace que el código anterior funcionan a la perfección. Sin embargo, I quiere para enlazar a Qt estáticamente, por lo que la pregunta ahora parece ser más sobre cargar complementos de Qt cuando se enlaza a Qt estáticamente y menos sobre íconos en general. Actualizaré el título de la publicación para reflejar esto.
Gracias, eso funciona a la perfección. – Thomi