2009-11-05 9 views
5

Tengo algunos botones en un tabwidget. Estos botones deben tener algún icono encima de ellos.Qt Icon incrustado en Executeable

Conozco QPixmap que me permitirá poner una imagen sobre un botón, pero veo que estos constructores toman una ruta de archivo como parámetro. Quiero evitar arrastrar iconos en un archivo después de compilar. Me gustaría incrustar estos íconos en algo ejecutable de alguna manera, a fin de reducir el equipaje que necesito cargar para que funcione.

¿Cómo puedo lograr esto?

Estoy interesado en escuchar formas de lograr mi objetivo de no tener que arrastrar archivos de icono con el ejecutable; por favor concéntrese en este aspecto si está confundido acerca de alguna terminología que pueda haber usado, ya que todavía estoy aprendiendo Qt.

Respuesta

4

Usted tendrá un archivo de recursos llamado algo así como ProjectName.qrc y estas lista los iconos PNG (por lo general). Con Qt Creator, ya comienza con un archivo QRC en blanco para usted. Al especificar el "archivo", utiliza la sintaxis de la forma ": /Images/MyCrazyIcon.png" y el icono se carga desde el recurso que está incrustado en el ejecutable. Tenga en cuenta que Qt no gestiona los recursos de la manera más perfecta, que es que se puedan cargar a demanda, pero no siempre acaparando la memoria del sistema; SIEMPRE acaparan la memoria del sistema, lo que realmente no es tan importante si son pequeños. Para los grandes gráficos que desea borrar más adelante, simplemente especifique un nombre de archivo real (por ejemplo, "MyBigFile.png" en lugar de ": /MyBigFile.png", que este último apunta a un recurso dentro del ejecutable).

Con la sintaxis de recursos, la potencia está en el carácter de dos puntos ":", por lo que podría tener ": MiArchivo.png", siempre que el archivo QRC esté ubicado en el mismo directorio que los recursos. Así es como lo estoy haciendo, y hasta ahora no veo inconveniente en esta sintaxis. Odio incluir ".../Images/..." en la sintaxis, por lo que mis nombres de recursos se direccionan con ": MyPic.png" sin el más largo ": /Images/MyPic.png" y todo funciona bien.

La documentación de Qt indica que EN ESTE MOMENTO no son compatibles con el manejo de recursos verdaderos que admite Windows y Mac, pero que las cosas podrían cambiar en el futuro. Recuerde, "soporte de recursos verdadero" se refiere a esa cosa agradable en la que puede colocar gráficos y sonidos de varios megabytes dentro de su ejecutable y nunca preocuparse de que se carguen en la memoria hasta el momento mágico que los solicite. Los recursos QRC se cargan en la memoria cuando el ejecutable está cargado. El respaldo del archivo cargable por cargabilidad compensa con creces esta debilidad. Qt está mejorando rápidamente y un día podrían ser compatibles con los sistemas de recursos de Windows y Mac. Me estoy volviendo redundante y debo irme. Ta ta. Todos me modifican, necesito los puntos.