Sto provando a utilizzare la grafica SVG in QIcons. Ho una libreria statica che contiene tutte le mie risorse grafiche e un metodo in quella libreria statica che restituisce QIcons precaricato con la grafica corretta. Sto cercando di fare questo:Caricamento di plugin Qt durante il collegamento statico a Qt?
QIcon icon(":/icons/find.svg");
Ho verificato che le risorse che è stata eseguita elencando con QDir:
qDebug() << QDir(":/icons/").entryList();
Tuttavia, l'icona SVG è non viene mostrato. Quando cambio il codice di caricamento delle icone su questo:
QIcon icon(":/icons/find.png");
tutto funziona correttamente.
Il problema sembra essere che il plug-in SVG non viene mai caricato. Posso ottenere un elenco dei tipi di immagine supportati, che contiene:
("bmp", "PBM", "PGM", "png", "ppm", "xbm", "XPM")
ma senza menzione di SVG.
Mi sono assicurato che sto usando il modulo SVG sia nel mio file .pro della libreria statica che nel mio file .pro dell'applicazione principale.
Edit:
Sembra che il problema è che stanno collegando a Qt staticamente, e quindi i plugin sono tutte le librerie statiche. La documentazione per QPluginLoader
afferma che:
Si noti che il QPluginLoader non può essere utilizzato se l'applicazione è staticamente legato contro Qt. In questo caso, l'utente dovrà anche collegarsi ai plug-in staticamente. È possibile utilizzare QLibrary se è necessario caricare le librerie dinamiche in un'applicazione collegata in modo statico.
Eppure il collegamento statico a questi plugin sembra non fare nulla (l'elenco dei formati di immagine supportati non cresce).
Edit2:
Inoltre, il collegamento a Qt in modo dinamico (dopo la ricostruzione tutta la mia app) rende il codice di cui sopra lavoro perfettamente. Tuttavia, I desidera collegarsi a Qt in modo statico, quindi la domanda sembra essere più sul caricamento dei plugin Qt quando si collega a Qt staticamente e meno sulle icone in generale. Aggiornerò il titolo del post per riflettere questo.
Grazie - funziona perfettamente. – Thomi