2009-11-05 5 views
5

J'ai quelques boutons sur un tabwidget. Ces boutons doivent avoir une icône sur eux.Qt Icon intégré dans Executeable

Je suis conscient de QPixmap qui me permettra de mettre une image sur un bouton, mais je vois que ces constructeurs prennent un chemin de fichier en paramètre. Je veux éviter de faire glisser des icônes dans un fichier après la construction. Je voudrais intégrer ces icônes dans l'exécutable d'une façon ou d'une autre, afin de réduire les bagages que j'ai besoin de trimballer afin de le faire fonctionner.

Comment puis-je accomplir ceci?

Je suis intéressé par les moyens d'atteindre mon objectif de ne pas avoir à faire glisser les fichiers d'icônes avec l'exécutable; S'il vous plaît se concentrer sur cet aspect si vous êtes confus au sujet de la terminologie que j'ai pu utiliser, car j'apprends encore Qt.

Répondre

12

Bien sûr, vous pouvez intégrer des icônes, des images et toutes les autres ressources personnalisées dans votre application. S'il vous plaît lire The Qt 4's Resource System (ou click here pour Qt 5)

4

Vous aurez un fichier de ressources nommé quelque chose comme ProjectName.qrc et ceux-ci liste les icônes (généralement PNGs). Avec Qt Creator, il commence déjà avec un fichier QRC vide pour vous. Lorsque vous spécifiez le "fichier", vous utilisez la syntaxe à la manière de ": /Images/MyCrazyIcon.png" et l'icône est chargée à partir de la ressource incorporée dans votre exécutable. Notez que Qt ne gère pas les ressources de la manière la plus parfaite, c'est-à-dire qu'elles peuvent être chargées sur demande, mais pas toujours dans la mémoire système; Ils consomment TOUJOURS de la mémoire système, ce qui n'est pas si grave s'ils sont petits. Pour les grands graphiques que vous souhaitez supprimer plus tard, spécifiez simplement un nom de fichier réel (par exemple, "MyBigFile.png" au lieu de ": /MyBigFile.png", que ce dernier pointe vers une ressource dans l'exécutable). Avec la syntaxe de ressource, la puissance est dans le caractère deux-points ":", vous pourriez même avoir ": MyFile.png", à condition que le fichier QRC se trouve dans le même répertoire que les ressources. C'est ainsi que je le fais, et jusqu'à présent, je ne vois aucun inconvénient de cette syntaxe. Je déteste y compris ".../Images/..." dans la syntaxe, donc mes noms de ressources sont adressés avec ": MyPic.png" sans le plus long ": /Images/MyPic.png" et tout fonctionne bien.

La documentation de Qt indique qu'à l'heure actuelle, ils ne prennent pas en charge la gestion des ressources réelles prise en charge par Windows et Mac, mais que les choses pourraient changer à l'avenir. Rappelez-vous, le "vrai support des ressources" fait référence à cette belle chose où vous pouvez placer des graphiques et des sons multi-mégaoctets dans votre exécutable et ne jamais vous soucier de les charger en mémoire jusqu'au moment magique où vous les demandez. Les ressources QRC sont chargées en mémoire lorsque l'exécutable est chargé. Le skinning par support de fichier chargeable compense largement cette faiblesse. Qt s'améliore rapidement et un jour ils pourraient très bien supporter les systèmes de ressources Windows et Mac. Je deviens redondant et dois partir. Ta ta. Tout le monde me modise, j'ai besoin des points.