Я пытаюсь использовать SVG-графику в QIcons. У меня есть статическая библиотека, которая содержит все мои графические ресурсы, и метод в этой статической библиотеке, который возвращает QIcon, предварительно загруженные с правильной графикой. Я пытаюсь сделать это:
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.
Я убедился, что использую модуль SVG как в своем статическом файле .pro, так и в главном .pro файле приложения.
Edit:
Кажется, проблема в том, что я статически связываюсь с Qt, и, таким образом, все плагины являются статическими библиотеками. Документация для QPluginLoader
гласит:
Обратите внимание, что QPluginLoader не может быть
используется, если ваше приложение статически
связаны с Qt. В этом случае вы
также придется ссылаться на плагины
статически. Вы можете использовать QLibrary, если
вам нужно загрузить динамические библиотеки в
статически связанное приложение.
Тем не менее статическая ссылка на эти плагины, похоже, ничего не делает (список поддерживаемых форматов изображений не увеличивается).
Edit2:
Кроме того, динамическая ссылка на Qt (после перестройки всего моего приложения) делает приведенный выше код отлично работающим. Однако я хочу, чтобы статически связывался с Qt, поэтому теперь вопрос заключается в том, чтобы больше загружать плагины Qt при статической ссылке на Qt, а не в целом по иконкам. Я обновлю название поста, чтобы отразить это.