10
votes

Icônes SVG ne s'affiche pas dans la version de la version QT4 dans Windows

J'ai une application Qt4 avec des icônes SVG, compilées avec Mingw (sous Windows), liée aux bibliothèques partagées QT.

Lorsque l'application est exécutée, les icônes SVG apparaissent dans les bâtiments de débogage et de version sous Linux, mais dans Windows SVG Icons apparaît uniquement dans la construction de débogage mais pas dans la construction de la libération.

Toutes les icônes SVG sont énumérées dans Project.QRC et Project.Pro a ressources = projet.qrc . Application utilise qtsvg4.dll (version 4.7.0).

Qt 4.7.0, Qt Creator 2.0.1, MINGW / G ++ 4.4.0.

Mise à jour de la solution: dans le répertoire d'applications, créer / imageFormats / répertoire et mettre qsvg4.dll au lieu d'un répertoire d'applications lui-même, ou créez un qt.conf fichier avec le chemin approprié. Plus d'informations dans Déploiement de plugins .


2 commentaires

Comment ressemble votre code d'icône? Peut-être que vous avez des appels importants enveloppés dans Assertion / Q_Assert? Ensuite, ils pourraient ne pas être exécutés en mode de libération.


Frank: Merci pour votre réponse. J'ai regardé et ils n'étaient pas enveloppés dans des affirmations. Les icônes sont définies dans des fichiers de code et d'interface utilisateur comme ceci: qpushbutton * buttonx = nouveau qpushbutton (QiCon (": / images / buttonx.svg"), "do x", ceci); ou : / images / iconx.svg : / images / iconx.svg . Les icônes apparaissent également dans les constructions de libération Linux.


8 Réponses :


-1
votes

Sur la base de ce que vous avez dit, vous faites tout ce qui est nécessaire pour que cela fonctionne, une réponse appropriée nécessite probablement une autre information. Voir si ces liens vous sont utiles:

http://lists.trolltech.com/qt-interest/ 2008-10 / msg00655.html

http://www.qtcentre.org/archive/index. php / t-9036.html

En particulier, assurez-vous que le plugin SVG est chargé avec:

qimagereader :: supportéImageFromats ()


2 commentaires

Les liens sont découragés de manière à ce que la mai soit morte à l'avenir.


Eh bien ... et donc l'avenir a arrêté. Les deux liens sont morts.



8
votes

Très probablement, vous devrez inclure les plugins de votre DIR QT. Cela implique de créer un fichier qt.conf local à votre application (voir ici: http. : //doc.qt.io/qt-4.8/qt-conf.html , plus spécifiquement la section [Chemins]) et copiez C: \ qt \ 4.xx \ plugins \ imagesformats * .dll à Votre répertoire de distribuable.


1 commentaires

Merci, c'était ça. J'ai dû créer / imageFormats dossier dans mon dossier d'application et copier qsvg4.dll dans celui-ci. J'ai déjà essayé de copier qsvg4.dll dans un dossier d'application avec d'autres DLL QT, mais l'application la recherchait sous / imageFormats (comportement par défaut sans qt.conf).



0
votes

pour mon (qt 4.6.3) Application, j'ai résolu ceci en mettant la dll plug-in (qsvgicon4.dll) dans un répertoire appelé iconengines dans le répertoire d'applications.

Essayé d'autres solutions - telles que le déploiement de plugin au répertoire (dans le répertoire de l'application) nommé ImageFormats avec et sans qualité appropriée, mais pas de joie.

note : J'ai précédemment exécuté l'application avec les DLL de Qt 4.7.0 et n'avait aucun problème sur la même machine cible Win7.


0 commentaires

-2
votes

Si ajouter le qt4svg.dll et l'imageFormats / qsvg4.dll ne fonctionne pas, assurez-vous que le qt4xml.dll est également inclus dans les DLL Standard Core, GUI et SVG.

Voici comment j'ai résolu ceci pour moi.

Short: pour rendant des images SVG, vous devez inclure le XML DLL ASWELL


0 commentaires

-1
votes

Il semble toujours être un problème avec Qt5.1 dans Windows, ici comment je l'ai résolu pour les utilisateurs de CLAKE:

get_target_property(QtCore_location Qt5::Core LOCATION)
get_filename_component(QtBinBase ${QtCore_location} PATH)


0 commentaires

1
votes

pour qt5

Depuis Qt5, le framework a été fortement modularisé (liste des modules) . Très probablement, il vous manque le module SVG. L'application compilera toujours sans se plaindre. Assurez-vous que le module SVG est installé sur votre système et lié (avec QMake (HOWTO) ou simple marque ). S'il était lié avec succès QimagerReader :: Principalement supporté () listera SVG.


0 commentaires

0
votes

Vous avez deviné: voici encore une autre façon de Évitez de lire les documents , mais plutôt à compter sur des conseils bon marché à partir d'Internet.

Ajoutez simplement cette ligne à votre app.pro code>! p>

g++ [...] -LC:/msys64/mingw64/qt5-static/share/qt5/plugins/imageformats \
          C:/msys64/mingw64/qt5-static/share/qt5/plugins/imageformats/libqsvg.a [...]


0 commentaires

2
votes

pour Qt 5.14 Ajouter une ligne au fichier .pro xxx


0 commentaires