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 の [Choose file] ボタン (3 つのドット) をクリックすると、必要なドイツ語のダイアログではなく英語版のファイル ダイアログが表示されます。

また、コンソールに次の警告があります。

KGlobal::locale::Warning your global KLocale is being recreateing with a valid main component instead of a fake component. これは通常、メイン コンポーネントが作成される前に 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 に答える