Próbuję użyć grafiki SVG w QIcons. Mam statyczną bibliotekę, która zawiera wszystkie moje zasoby graficzne, oraz metodę w tej bibliotece statycznej, która zwraca QIcons wstępnie załadowaną poprawną grafiką. Próbuję to zrobić:Ładowanie wtyczek Qt podczas statycznego linkowania do Qt?
QIcon icon(":/icons/find.svg");
I sprawdzeniu, że zasoby został załadowany przez wystawianie go QDir:
qDebug() << QDir(":/icons/").entryList();
Jednak ikona SVG nie jest pokazywany. Po zmianie kodu ładowania ikony na:
QIcon icon(":/icons/find.png");
wszystko działa poprawnie.
Problem polega na tym, że wtyczka SVG nigdy się nie ładuje. mogę uzyskać listę obsługiwanych typów obrazów, które zawiera:
("bmp", "PBM", "PGM", "png", "ppm", "xbm", "xpm")
, ale bez wzmianki o SVG.
Upewniłem się, że używam modułu SVG zarówno w pliku mojej biblioteki statycznej .pro, jak i w głównym pliku .pro.
Edit:
Wydaje się, że problemem jest to, że jestem z linkami do Qt statycznie, a tym samym wszystkie wtyczki są bibliotekami statycznych. Dokumentacja dla QPluginLoader
stwierdza:
Zauważ, że QPluginLoader nie może być stosowane, jeżeli aplikacja jest statycznie zlinkowana Qt. W takim przypadku musisz połączyć się statycznie z wtyczkami . Możesz użyć QLibrary, jeśli potrzebujesz do załadowania dynamicznych bibliotek w statycznie połączonej aplikacji.
Jednak statyczne łączenie z tymi wtyczkami wydaje się nic nie robić (lista obsługiwanych formatów obrazu nie rośnie).
Edit2:
Również łączenie do Qt dynamicznie (po przebudowie moją całą aplikację) sprawia, że powyższy kod prac doskonale. Jednak I chce, aby łączył się statycznie ze statystyką Qt, więc pytanie wygląda teraz bardziej na temat ładowania wtyczek Qt, gdy łączę się ze statycznie, a mniej ogólnie z ikonami. Zaktualizuję tytuł postu, aby to odzwierciedlić.
Dziękuję - to działa idealnie. – Thomi