2010-12-15 9 views
6

Estoy tratando de mostrar un ícono de "advertencia" junto a QLineEdit si contiene datos no válidos.
Estaba tratando de usar QStyle::standardIcon(QStyle::SP_MessageBoxWarning) para obtener un mapa de píxeles estándar y colocarlo dentro de un QLabel, y en algunos casos esto parece funcionar. Cuando se ejecuta Gnome, el icono se muestra correctamente, pero cuando se ejecuta bajo KDE no se muestra ningún icono. Supongo que el icono de advertencia simplemente no está incluido en el estilo utilizado en KDE.Mostrar el icono de advertencia estándar en Qt4

¿Cuál es la forma preferida de mostrar un icono de advertencia "estándar" en Qt? ¿Existe alguna lista que muestre qué iconos están incluidos en cada estilo? ¿Cómo puedo obtener un icono de un estilo que sé que incluye el icono de advertencia?

Respuesta

9

La última vez que tuve un problema similar, encontré this Qt labs discussion útil. Me informó que QIcon ahora (desde 4.6 creo) tiene una función QIcon::fromTheme que le permite cargar un icono basado en the Freedesktop.org Icon Naming Specification, y además proporciona un icono de reserva para ser utilizado si el tema actual no tiene el icono en cuestión.

Lo que hice fue entonces incluir algunos iconos muy básicos para utilizarlos como alternativa, y en general, especificar iconos solo por sus nombres de Freedesktop. Esto dio un aspecto consistente con el tema casi siempre, y el programa aún funcionaba en los casos en que a la gente le faltaban iconos.

En cuanto al ícono de advertencia, supongo/espero que cada tema debe tener el nombre "diálogo-advertencia", y que es lo que está buscando.

Espero que esto ayude.

Edición: Ah, y, en caso de que no sabe, puede ser útil examinar, por ejemplo, la Tango icon set para obtener una idea aproximada de lo que los nombres corresponden a Freedesktop (aunque, por supuesto, theme- dependiente).

5

Qt hace bundle a number of images que son recursos que puede usar en su propio código. Estas imágenes son un superconjunto de las disponibles a través de standardIcon(). Es posible que desee verificar que la imagen en particular esté incluida en las versiones de Qt a las que se dirige.

El resultado final podría ser similar al siguiente:

QPixmap pixmap(":/trolltech/styles/commonstyle/images/up-128.png"); 
// use pixmap as needed 
+0

interesante. Me imagino que esto es muy útil para suministrar '' QIcon :: fromTheme'' con un respaldo. – gspr

Cuestiones relacionadas