c++ - QFileDialog动态翻译

标签 c++ qt qtranslate

这个问题有unfortunately been asked before但我在这里要疯了。 在我的 Qt 应用程序中,用户能够动态更改非常适合我自己的所有翻译的语言。它不适用于我对 QFileDialog 的调用。相应代码:

void myapp::change_language(std::string& lang_str){
    // my own translations works
    qApp->removeTranslator(&this->app_lang);
    this->app_lang.load(QString::fromStdString(lang_str));
    qApp->installTranslator(&this->app_lang);

    // system translations, works not for qfiledialog
    qApp->removeTranslator(&this->app_lang_qt);
    bool test = this->app_lang_qt.load("qt_fr.qm"); // returns true
    qApp->installTranslator(&this->app_lang_qt);
}

void myapp::changeEvent(QEvent* event){
    if(event->type() == QEvent::LanguageChange){
        this->ui.retranslateUi(this);
    }
    QMainWindow::changeEvent(event);
}

QTranslator app_lang;
QTranslator app_lang_qt;

固定字符串“qt_fr.qm”仅用于测试目的,因为法语很容易检测到。

我想要的是在静态调用 QFileDialog 和 QMessageBox 时更改语言,但语言只在 QMessageBox 中更改,而不是在 QFileDialog 中更改。对于这两个类,我只调用静态成员,这不是问题。我还尝试在 main.cpp 中安装此翻译器,结果相同。

最佳答案

默认情况下,QFileDialog 将使用 native 文件浏览器而不是自定义的基于 Qt 的对话框。 native 文件浏览器将使用操作系统语言,而不是 Qt 语言,并且不会应用 Qt 翻译。您可以使用 QFileDialogDontUseNativeDialog 选项覆盖此行为。

关于c++ - QFileDialog动态翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22749267/

相关文章:

css - 白皮书 : problems with qTranslate styles

wordpress - qTranslate for Wordpress 不会自动为我提供正确的语言

c++ - 为什么我们需要 base-to-member 习语?

c++ - 定义一个类并调用它的成员函数

javascript - Qtranslate 每种语言的自定义字体问题

c++ - 自定义 Qt 小部件

c++ - Qt - 汇编代码 ListView

c++ - 在 Cygwin 64 上包含 boost.asio 时出错

c++ - DynamicArray of struct - 添加元素而不创建结构变量/对象

c++ - 解决枚举命名问题 - Qt