2

以下方法适用于本地化 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 中的“选择文件”按钮(带有三个点)时,会出现文件对话框的英文版本,而不是我想要的德文版本。

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

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

我应该去哪里看?

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

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

4

2 回答 2

0

尝试在translator.load之后添加这一行:

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

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

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

于 2012-12-12T13:18:22.127 回答
0

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

您可以在此处找到带有属性的枚举。

于 2021-02-17T10:33:58.063 回答