Solución al problema de acentos en Qt
Muchas veces en Qt encontramos un problema enorme al utilizar las tildes o los caracteres especiales como la ñ o la ç. Hasta ahora no había podido solucionar el problema de la mala visualización de las letras a pesar de saber donde estaba el problema: en la codificación.
Por defecto Qt interpreta las QString y los argumentos de la funcion tr() como Latin-1, mientras que Linux usa UTF-8 como sistema de codificación. En el caso de Windows es ISO 8859-15. Lo que yo no sabía era como hacer que por defecto, todo el texto que paso por tr() o en las QString, sea con la codificación que yo quiera, y la solución ha sido QTextCode.
QTextCode es una clase que nos permite asignar la codificación de caracteres por defecto a nuestro programa. En mi caso el código lo he puesto en el main, y es el siguiente:
QTextCodec *linuxCodec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(linuxCodec);
QTextCodec::setCodecForCStrings(linuxCodec);
QTextCodec::setCodecForLocale(linuxCodec);Esto no influye para elegir nuestro idioma, salvo que queramos usar los carácteres chinos, japoneses y coreanos, así como el alfabeto cirílico y árabe. En ese caso deberíamos tener una función que especificara la codificación, al margen de las traducciones hechas con Qt-Linguist.
Aún no hay trackbacks.
2 Mayo, 2010 - 21:31
QString gracias (“¡gracias!”);
15 Junio, 2010 - 19:37
Gracias, funciono, salvo que en vez de:
QTextCodec::setCodecForCString(linuxCodec);
la remplace por:
QTextCodec::setCodecForCStrings(linuxCodec);
15 Junio, 2010 - 20:08
Gracias! Ya está hecho, un detalle que se me pasó.
Un saludo!
5 Octubre, 2010 - 15:20
Era un gran problema. Gracias!!!
Saludos
25 Febrero, 2011 - 11:39
¡Perfecta solución!
Un saludo y muchas gracias.
19 Abril, 2011 - 04:33
TexMaker es una aplicacion Qt en linux y tiene el problema con los acentos, que archivo debo de editar para solucionar este problema???
19 Abril, 2011 - 07:22
Lo mejor es que edites tu archivo principal de aplicación, o incluso el main.cpp si esto no funcionara.
Un saludo!
26 Abril, 2011 - 00:55
Gracias Francese por tomarte la molestia de contestar a mi pregunta, pero sigo en las mismas, cual es el archivo principal de aplicacion?. Perdon por tanta ignorancia.
26 Abril, 2011 - 13:00
Hola,
Como te decía en la respuesta anterior, tienes que modificar el main.cpp o el fichero cone extensión .cpp donde se define la clase que hereda de QMainWindow.
Saludos.