2010-01-07 2 views
23

Функция перевода Qt tr не работает в функции main, но отлично работает в функции члена QWidget. Почему это?Qt tr для интернационализации не работает в основной функции?

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

Немного больше информации? Пожалуйста? Например, какой-то код или что-то еще? – balpha

+2

Извините, кажется, функция tr является статической функцией внутри QObject и большую часть времени QObject наследуется в другом виджете, который они напрямую используют tr, но в моем случае это должен быть QObject :: tr works –

+0

, кто-то может закрыть его как не более релевантный –

ответ

53

Функция перевода tr представляет собой статический метод QObject. Поскольку QWidget является подклассом QObject, tr доступен в методах QWidget, но в main() вам необходимо использовать QObject::tr, чтобы использовать эту функцию, как показано ниже.

#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

спасибо balpha за то, что вы сделали ответ читаемым. –

Смежные вопросы