如何本地化从QPrintDialog调用的QFileDialog?

时间:2012-12-07 18:54:04

标签: qt localization qt4 qfiledialog

以下适用于本地化QPrintDialog:

#include <QtGui/QApplication>
#include <QTranslator>
#include <QPrintDialog>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTranslator translator;
    if (translator.load("./translations/qt_de.qm")) {
       a.installTranslator(&translator);
    }

    QPrintDialog printdialog;
    printdialog.exec();
}

但是当我点击QPrintDialog中的“选择文件”-Button(带有三个点)时,会出现英文版的文件对话框而不是我想要的德文版。

此外,控制台还有一个警告:

  

KGlobal :: locale ::警告使用有效的主要组件而不是虚假组件重新创建全局KLocale,这通常意味着您在创建主组件之前尝试调用i18n相关函数。你不应该这样做,因为它很可能不会起作用

我应该在哪里看?

至于提到的解决方法here:有些QDialogs支持:: DontUseNativeDialog标志,但QPrintDialog不支持。

(在linux上测试过,不知道其他平台的结果如何)

2 个答案:

答案 0 :(得分:0)

尝试在翻译后添加。加载此行:

a :: installTranslator(&amp; translator); //或类似的东西(*)

并阅读有关QApplication :: installTranslator方法的文档...

(*)抱歉,我查了一下,这是一个QCoreApplication的方法。我通过qApp宏将它用于QMainWindow子类,我不知道如何从main.cpp调用它。请做一些测试。

答案 1 :(得分:0)

我发现自己遇到了同样的问题,我通过添加到我的主窗口来解决它: QApplication::setAttribute(Qt::AA_DontUseNativeDialogs);

您可以找到具有 here 属性的枚举。

相关问题