Qt4 QTranslator只在我程序的某些部分起作用

Qt4 QTranslator只在我程序的某些部分起作用,qt4,translation,netbeans-7,qmainwindow,qtranslate,Qt4,Translation,Netbeans 7,Qmainwindow,Qtranslate,我在翻译我的qt应用程序(Windows上的Qt4.7.4)时遇到了一个奇怪的问题。 发生的情况如下: 1.-我执行lupdate并生成一个.ts文件 2.-我使用qt语言专家编辑生成的.ts文件 3.-我使用上一个.ts文件执行lrelease 4.-从Netbeans,我清理并构建项目,然后运行它 当我的应用程序运行时,大多数小部件(标签、按钮、标题、菜单操作、菜单)都会根据我之前生成的翻译文件进行翻译。问题是有些元素没有被翻译,尽管我在翻译文件中为它们提供了翻译(Qt语言学家识别了它们)

我在翻译我的qt应用程序(Windows上的Qt4.7.4)时遇到了一个奇怪的问题。 发生的情况如下:

1.-我执行lupdate并生成一个.ts文件

2.-我使用qt语言专家编辑生成的.ts文件

3.-我使用上一个.ts文件执行lrelease

4.-从Netbeans,我清理并构建项目,然后运行它

当我的应用程序运行时,大多数小部件(标签、按钮、标题、菜单操作、菜单)都会根据我之前生成的翻译文件进行翻译。问题是有些元素没有被翻译,尽管我在翻译文件中为它们提供了翻译(Qt语言学家识别了它们)

我的问题是:为什么有些文本被翻译,而另一些文本被忽视,这有什么原因吗

我已确保每个文本都在tr()中。(正如我之前所说,它们都出现在《Qt语言学家》中)


感谢所有的帮助。

因此它只适用于Linux,而不适用于mingw32/mingw64

main.cpp

#include <QtGui/QApplication>
#include "test_w32.h"
#include <QTranslator>
#include <QLocale>


int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QString locale = QLocale::system().name();
    QTranslator translator;
    translator.load(QString("test_w32_") +locale);
    app.installTranslator(&translator);
    test_w32 foo;
    foo.show();
    return app.exec();
}
#包括
#包括“test_w32.h”
#包括
#包括
int main(int argc,字符**argv)
{
QApplication应用程序(argc、argv);
QString locale=QLocale::system().name();
翻译;
load(QString(“test_w32”)+locale);
app.installTranslator(&translator);
测试uw32-foo;
foo.show();
返回app.exec();
}
测试w32.h

#ifndef test_w32_H
#define test_w32_H

#include <QtGui/QMainWindow>

class test_w32 : public QMainWindow
{
Q_OBJECT
public:
    test_w32();
    virtual ~test_w32();
};

#endif // test_w32_H
\ifndef测试
#定义测试\u w32\u H
#包括
类测试\u w32:公共QMainWindow
{
Q_对象
公众:
测试_w32();
虚拟~testw32();
};
#endif//test_w32_H
test_w32.cpp

#include "test_w32.h"

#include <QtGui/QLabel>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QAction>


test_w32::test_w32()
{
    QLabel* l = new QLabel( this );
    l->setText(trUtf8( "Hello World!" ));
    setCentralWidget( l );
    QAction* a = new QAction(this);
    a->setText(trUtf8( "Quit" ));
    connect(a, SIGNAL(triggered()), SLOT(close()) );
    menuBar()->addMenu(trUtf8( "File" ))->addAction( a );
}

test_w32::~test_w32()
{}

#include "test_w32.moc"
#包括“test_w32.h”
#包括
#包括
#包括
#包括
test_w32::test_w32()
{
QLabel*l=新的QLabel(此);
l->setText(trUtf8(“你好,世界!”);
setCentralWidget(l);
QAction*a=新QAction(本);
a->setText(trUtf8(“退出”);
连接(a,信号(已触发()),插槽(关闭());
菜单栏()->addMenu(trUtf8(“文件”)->addAction(a);
}
test_w32::~test_w32()
{}
#包括“测试w32.moc”
有什么问题吗?
谢谢

,而且您已经确保在安装translator之后调用每次出现的tr?Hi@KamilKlimek translator安装在main函数中。在调用转换器之后,我调用我的mainWindow类,如果所有操作都失败,那么QMainWindow将不会被翻译:S应用程序的其余部分将被翻译。我不知道问题是什么,你必须给我们提供再现你问题的最小代码示例。