p2

Siguiente Anterior Tabla de Contenidos

Ahora haremos p2, que es el ejemplo análogo a p1, pero usando las librerías de KDE, todo el código esta de nuevo en main.cpp:


#include <kapp.h>
#include <klocale.h>
#include <qpushbutton.h>
 
int main( int argc, char **argv )
{
    KApplication a( argc, argv , "p2");
 
    QPushButton *hello=new QPushButton( i18n("Hello World !"), 0 );
    hello->setAutoResize( TRUE );
 
    QObject::connect( hello, SIGNAL(clicked()), &a, SLOT(quit()) );
 
    a.setMainWidget( hello );
    hello->show();
 
    return a.exec();
}

main.cpp

Analicémoslo.

    KApplication a( argc, argv , "p2");

Este código crea un objeto KApplication. KApplication es una clase que hereda de QApplication para añadirle características específicas de las librerías de KDE, como internacionalización, configuración de las aplicaciones, etc.

    QPushButton *hello=new QPushButton( i18n("Hello World !"), 0 );
    hello->setAutoResize( TRUE );

La diferencia entre este código y el usado en p1 es que ahora no usamos la cadena "Hello World !" directamente, sino el valor que devuelve i18n("Hello World !"), Lo hacemos porque i18n es una función que devuelve la cadena traducida al lenguaje que el usuario seleccionó en el módulo de lenguaje de KControl. Con este simple cambio se tiene capacidad para soportar los mas de 70 lenguajes a los que se traduce KDE actualmente.

Debido a esto, no podemos usar un tamño fijo para los botones, ya que no podemos conocer a priori la longitud de la cadena tras hacer la traducción, y no estaría bien si no mostramos la cadena completa porque el botón sea muy pequeño. Usando el flag de autoResize, los botones cambiarán su tamaño automáticamente siempre que su contenido cambie, con lo que estaremos seguros de que todo el texto se muestre siempre correctamente.

El resto de la aplicación no cambia respecto a p1

Siguiente Anterior Tabla de Contenidos


© 1999-2002 Antonio Larrosa
Traducido por Rafael Larrosa