当使用Qt国际化翻译函数tr时,如果超出了使用范围就会出现以下情况:
国际化翻译函数tr是QObject类的静态公共成员函数,而QObject类是所有Qt对象的基类,国际化翻译函数tr只有在QObject类或者其子类中可以使用,像QWidgets就是继承自QObject类,因此在QWidgets的小部件中就可以直接使用国际化翻译函数tr,如果是在QObject类外部,使用tr函数进行翻译是不起作用的,需要添加QObject头文件#include <QObject>,并使用QObject::规定其作用域范围,像下面这样。
#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();
}