2010-01-07 1 views
23

La función de traducción de Qt tr no funciona en la función main, pero funciona bien en una función miembro de QWidget. ¿Porqué es eso?Qt tr para la internacionalización no funciona en la función principal?

int main(int argc, char *argv[]) 
{ 

    QApplication a(argc, argv); 
    QDialog dialog; 
    QString temp = tr("dadasda");//error:tr was not declared in this scope 
    dialog.show(); 
    return a.exec(); 
} 
+1

¿Solo un poquito más de información? ¿Por favor? Al igual que, algún código o algo? – balpha

+2

lo siento, parece que la función tr es función estática dentro de QObject y la mayoría de las veces QObject se hereda en otro widget usan directamente tr, pero en mi caso tiene que ser QObject :: tr funciona –

+0

alguien puede cerrarlo como no relevante –

Respuesta

53

La función de traducción tr es un método estático de QObject. Como QWidget es una subclase de QObject, tr está disponible en los métodos de QWidget, pero en main() debe usar QObject::tr para usar la función, como se muestra a continuación.

#include <QObject> 
int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    QDialog dialog; 
    QString temp = QObject::tr("dadasda");//works fine 
    dialog.show(); 
    return a.exec(); 
} 
+4

gracias balpha para hacer que la respuesta sea legible. –

Cuestiones relacionadas