以下适用于本地化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上测试过,不知道其他平台的结果如何)
答案 0 :(得分:0)
尝试在翻译后添加。加载此行:
a :: installTranslator(&amp; translator); //或类似的东西(*)
并阅读有关QApplication :: installTranslator方法的文档...
(*)抱歉,我查了一下,这是一个QCoreApplication的方法。我通过qApp宏将它用于QMainWindow子类,我不知道如何从main.cpp调用它。请做一些测试。
答案 1 :(得分:0)
我发现自己遇到了同样的问题,我通过添加到我的主窗口来解决它:
QApplication::setAttribute(Qt::AA_DontUseNativeDialogs);
您可以找到具有 here 属性的枚举。