6
votes

Comment obtenir une icône QT (QICON) donnée une extension de fichier

Je développe une application qui doit être Afficher les icônes associées à différents types de fichiers .
Par exemple, pour .doc extensions, j'en ai besoin pour pouvoir afficher l'icône Microsoft Word .

question:

Comment puis-je obtenir un QiCon du système à l'aide de QT SDK

Merci.


0 commentaires

3 Réponses :


11
votes

Utilisez le qtgui.qfileiconProvider classe.


2 commentaires

Juste peu de pointe de performance. Si vous devez fournir ces icônes très souvent, créez une instance locale de QfileIconProvider. La construction de qfileiconProvider est lourde


Il ressemble à qfileiconprovider est cher à construire car le cache utilisé ne doit pas être partagé entre plusieurs instances. Cependant, cela semble avoir changé dans QT 5.8 . Il utilise maintenant la cache d'E.G. qwindowstheme qui est partagé entre toutes les instances.



1
votes

Depuis Qt5, utilisez qmimedatabase pour que: xxx


1 commentaires

Fromtheme est Linux seulement, n'est-ce pas?



0
votes

Si vous n'avez pas besoin de exigence spéciale, qmimedatabase est un meilleur choix pour votre besoin. Je vous recommande d'essayer la réponse de @ Nitro2005. Vous pouvez toujours faire ce travail à la main à l'aide de qfileiconprovider .

Si vous voulez faire ce travail à votre main, mais vous ne pouvez pas utiliser qmimedatabase pour une raison quelconque , une solution fonctionne pour Linux / X11. Vous pouvez utiliser qfileinfo (const qstring & fichier) pour obtenir le suffixe / extension du fichier (ce n'est pas nécessaire à propos de la QString que vous avez transmis au constructeur qfileinfo est un chemin existant ou non) , puis obtenez le formulaire de type MIME qui suffixe, vous pouvez enfin obtenir le QICON en utilisant QICON :: fromtheme et c'est fait.

Par exemple, le code suivant vérifiera si le suffixe du fichier est ".bin", si c'est, le donnez-lui une icône du thème du système avec le type MIME "Application-X-Executable". En fait, il suffit de maintenir une base de données MIME par vous-même. xxx

pour obtenir la référence de chaîne de type MIME pour votre "Base de données MIME", veuillez vérifier le FreeDesktop icône Spécification de nommage .


0 commentaires