Подтвердить что ты не робот

Qt tr для интернационализации не работает в основной функции?

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

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();
}
4b9b3361

Ответ 1

Функция перевода 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();
}