国际化的Qt tr在主要功能中不起作用?

Pas*_*mer 29 string qt internationalization

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();
}
Run Code Online (Sandbox Code Playgroud)

Pas*_*mer 66

翻译函数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();
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢balpha使答案可读. (4认同)