Ich versuche SVG-Grafiken in QIcons zu verwenden. Ich habe eine statische Bibliothek, die alle meine Grafikressourcen enthält, und eine Methode in dieser statischen Bibliothek, die QIcons zurückgibt, die mit den richtigen Grafiken vorinstalliert sind. Ich versuche, dies zu tun:Laden von Qt-Plugins beim statischen Verbinden mit Qt?
QIcon icon(":/icons/find.svg");
Ich habe festgestellt, dass diese Ressourcen durch die Auflistung mit QDir geladen sind:
qDebug() << QDir(":/icons/").entryList();
Allerdings ist das SVG-Symbol nicht angezeigt wird. Wenn ich den Icon Ladecode zu diesem ändern:
alles funktioniert einwandfrei.
Das Problem scheint zu sein, dass das SVG-Plugin nie geladen wird. Ich kann eine Liste der unterstützten Bildtypen, die enthält:
("bmp", "pbm", "pgm", "png", "ppm", "xbm", "XPM")
aber keine Erwähnung von SVG.
Ich habe sichergestellt, dass ich das SVG-Modul sowohl in meiner statischen Bibliothek. PRO-Datei und meine Hauptanwendung. PRO-Datei verwenden.
Edit:
Es scheint, das Problem ist, dass ich statisch Qt bin Verknüpfung und damit die Plugins sind alle statischen Libs. Die Dokumentation für QPluginLoader
heißt es:
Beachten Sie, dass die QPluginLoader kann nicht verwendet werden, wenn Ihre Anwendung statisch gegen Qt verbunden ist. In diesem Fall müssen Sie auch statisch mit den Plugins verknüpfen. Sie können QLibrary verwenden, wenn Sie dynamische Bibliotheken in eine statisch verknüpfte Anwendung laden müssen.
Noch statische Verknüpfung zu diesen Plugins scheint nichts zu tun (die Liste der unterstützten Bildformate wächst nicht).
Edit2:
Auch dynamisch Qt Verknüpfung (nach meiner ganzen App Wiederaufbau) macht den Code oben arbeiten perfekt. Allerdings möchte ich statische Verbindung zu Qt, so dass die Frage jetzt mehr über das Laden von Qt-Plugins bei der statischen Verbindung zu Qt und weniger über Symbole im Allgemeinen aussieht. Ich werde den Posttitel aktualisieren, um dies zu reflektieren.
Danke - das funktioniert perfekt. – Thomi